2010-03-24 41 views
6

yılında xml ayrıştırmak ben ben benim xmlString dan 04 ve boş değerlere \ ama çıkarmadan önlemek için değiştirmem gerekiyor şeyi bulamıyorum karakterleri kaldırmak için kullanıyorum aşağıdaki fonksiyonu sonlandırma etiketlerimden Bu fonksiyonu çalıştırmakDüzenli ifade .net

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

herkes bana </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

Bu '\ 0'' ve '' \ 04'' dizenizle karakterleri değil, birkaç karakterler dışında her şeyi kaldırır (' <', '> ', boşluk,' .', '' kaldırmaz @ ' ve '-'). Ayrıca, bahsettiğiniz çıktıyı veren girdi nedir? – Thomas

+0

Bu işlevin girdisi neye benzediğinden bir veya iki satır yayınlayabilir misiniz? –

+0

@Thomas, '\ w' sözcük karakterleri, boşluk değil. – Joel

cevap

4
Private Function CleanInput(ByVal inputXML As String) As String 
    Return Regex.Replace(inputXML, "[^/><\w\[email protected]]", "") 
    ' --------------------------------^ 
End Function 
olarak biten etiketi tutmak için ifadede değiştirmek gerekiyor öğrenmek yardımcı olabilir, bu ne alıyorum

Ancak hedefiniz yalnızca \04 ve \00 'u kaldırmak olduğundan, yalnızca bunların üzerinde değişiklik yapılmasını kısıtlamak daha güvenlidir.

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

Teşekkürler bir demet! Girişiniz için herkes. Şimdi temiz bir XML alıyorum. – Tony