2010-03-24 12 views
6

Mam następujących funkcji, które używam, aby usunąć znaki \ 04 i null z mojego xmlString ale nie mogę znaleźć to, co muszę zmienić, aby uniknąć usunięcia \ z moich tagów końcowych. To co mam kiedy uruchomić tę funkcjęWyrażenie regularne do analizowania XML w .NET

<ARR>20080625<ARR><DEP>20110606<DEP><PCIID>626783<PCIID><NOPAX>1<NOPAX><TG><TG><HASPREV>FALSE<HASPREV><HASSUCC>FALSE<HASSUCC> 

Czy ktoś może mi pomóc dowiedzieć się, co muszę zmienić w moim ekspresji zachować znacznik kończący jako </tag>

Private Function CleanInput(ByVal inputXML As String) As String 
    ' Note - This will perform better if you compile the Regex and use a reference to it. 
    ' That assumes it will still be memory-resident the next time it is invoked. 
    ' Replace invalid characters with empty strings. 
    Return Regex.Replace(inputXML, "[^><\w\[email protected]]", "") 
End Function 
+0

nie usunąć ' '\ 0'' i'' \ 04'' znaków z Twojego ciąg, ale raczej usuwa wszystko z wyjątkiem kilku znaków ('' <', '>, spacje, '.'' '@ i '-'). Co to jest wejście, które daje wynik, o którym wspomniałeś? – Thomas

+0

Czy możesz opublikować wiersz lub dwa tego, jak wygląda wejście do tej funkcji? –

+0

@Thomas, '\ w' to znaki słowne, a nie spacja. – Joel

Odpowiedz

4
Private Function CleanInput(ByVal inputXML As String) As String 
    Return Regex.Replace(inputXML, "[^/><\w\[email protected]]", "") 
    ' --------------------------------^ 
End Function 

Ale ponieważ twój cel usuwa tylko \04 i \00, bezpieczniej jest ograniczyć tylko ich zamiennik.

Private Function CleanInput(ByVal inputXML As String) As String 
    Return Regex.Replace(inputXML, "[\4\0]", "") 
End Function 
+0

Wielkie dzięki! wszyscy za twój wkład. Otrzymuję teraz czysty XML. – Tony