¿Cómo recortar el espacio en la cadena XML excluyendo el encabezado del espacio de nombres XML en C#?

programación


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:

XML
<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

コメント

タイトルとURLをコピーしました