2010-03-24 12 views
6

tengo la siguiente función que estoy usando para eliminar los caracteres \ 04 y nulos de mi xmlString pero no puedo encontrar lo que necesito para cambiar a evitar la eliminación el \ de mis etiquetas de finalización Esto es lo que me pasa cuando corro esta funciónexpresión regular para analizar XML en .NET

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

Puede alguien ayudarme a descubrir qué es lo que necesito cambiar en mi expresión para mantener la etiqueta de cierre como </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

Esto no elimina ' '\ 0'' y'' \ 04'' caracteres de la cadena, sino más bien elimina todo excepto unos pocos caracteres ('' <', '>, espacios en blanco, '.',' '@ y '-'). Además, ¿cuál es la entrada que da la salida que mencionas? – Thomas

+0

¿Puedes publicar una o dos líneas de cómo se ve la entrada a esta función? –

+0

@Thomas, '\ w' son caracteres de palabras, no espacios en blanco. – Joel

Respuesta

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

Pero dado que su objetivo solo está eliminando el \04 y \00 es más seguro restringir el reemplazo solamente.

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

¡Muchas gracias! todos por su aporte. Ahora recibo un XML limpio. – Tony

Cuestiones relacionadas