Comment réduire l’espace dans la chaîne XML à l’exclusion de l’en-tête de l’espace de noms XML en C# ?

la programmation


Je souhaite réduire l’espace dans la chaîne XML à l’exclusion de l’en-tête de l’espace de noms XML en C#. Ma chaîne XML est la suivante. Je souhaite supprimer uniquement les valeurs du nœud XML, à l’exclusion de l’en-tête de l’espace de noms (getInstallmentHistoryReply xmlns:NS1=”urn:esbbank.com/gbo/xml/schemas/v1_0/”)

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

Ce que j’ai essayé :

Mon code est comme ci-dessous

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);

Solution 1

Deux choses : premièrement, vous devez supprimer le <pre> à partir de votre fichier XML ou il ne sera pas traité avant même que vous commenciez à le “découper”.

Deuxièmement, vous ne pouvez pas supprimer aveuglément tous les espaces : si vous regardez la chaîne que vous avez générée :

XML
<getInstallmentHistoryReplyxmlns:NS1="urn:esbbank.com/gbo/xml/schemas/v1_0/"><eAI_HEADER><serviceName>GET.FINANCE.DETAIL</serviceName>...

vous pouvez voir que ce n’est pas du XML valide : il a besoin d’un espace entre le getInstallmentHistoryReply étiquette et le xmlns: l’attribut ou l’ensemble ressemble à un nom d’attribut plus long sans aucune balise appropriée qui le précède.
Je vous suggère de modifier votre expression régulière pour supprimer uniquement les espaces après un > marqueur de fin de balise

コメント

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