[ad_1]
Quiero recortar el espacio en la cadena xml excluyendo el encabezado del espacio de nombres xml en c#. Mi cadena xml es la siguiente. Quiero recortar solo los valores del nodo xml excluyendo el encabezado del espacio de nombres (getInstallmentHistoryReply xmlns:NS1=”urn:esbbank.com/gbo/xml/schemas/v1_0/”)
<getInstallmentHistoryReply xmlns:NS1="urn:esbbank.com/gbo/xml/schemas/v1_0/"> <eAI_HEADER> <serviceName>GET.FINANCE.DETAIL</serviceName> <serviceType>SYNC</serviceType> <serviceVersion>1.0</serviceVersion> <client>ADIB</client> <clientChannel>DDS</clientChannel> <msgChannel>HTTP</msgChannel> <requestorLanguage>E</requestorLanguage> <securityInfo> <authentication> <UserId>DDS</UserId> <Password>XXXXXXXXXX</Password> </authentication> </securityInfo> <returnCode>0000</returnCode> </eAI_HEADER><pre></getInstallmentHistoryReply>
Lo que he probado:
Mi código es el siguiente
string ResponseXML_Updated = ResponseXML.Replace("NS1:getInstallmentHistoryReply", "getInstallmentHistoryReply"); string ResponseXML_Trimmed = System.Text.RegularExpressions.Regex.Replace(ResponseXML_Updated, @"(([^\s]+)\s+)", "$2"); System.Xml.XmlDocument xd1 = new System.Xml.XmlDocument(); xd1.LoadXml(ResponseXML_Trimmed);
Solución 1
Dos cosas: en primer lugar, debes quitar el <pre>
desde su xml o no se procesará incluso antes de comenzar a “recortarlo”.
En segundo lugar, no puedes eliminar ciegamente todos los espacios: si miras la cadena que generaste:
<getInstallmentHistoryReplyxmlns:NS1="urn:esbbank.com/gbo/xml/schemas/v1_0/"><eAI_HEADER><serviceName>GET.FINANCE.DETAIL</serviceName>...
Puedes ver que no es XML válido: necesita un espacio entre los getInstallmentHistoryReply
etiqueta y el xmlns:
El atributo o el conjunto parece un nombre de atributo más largo sin una etiqueta adecuada precediéndolo.
Le sugeriría que cambie su expresión regular para eliminar solo los espacios en blanco después de un >
marcador de final de etiqueta
[ad_2]
コメント