[ad_1]
我想修剪 xml 字符串中的空格,不包括 c# 中的 xml 命名空间标头。 我的 xml 字符串如下。 我想单独修剪 xml 节点值,不包括命名空间标头 (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>
我尝试过的:
我的代码如下
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);
解决方案1
有两件事 – 首先,您需要删除 <pre>
从您的 xml 中删除,否则在您开始“修剪”它之前它不会被处理。
其次,您不能盲目地删除所有空格:如果您查看生成的字符串:
XML
<getInstallmentHistoryReplyxmlns:NS1="urn:esbbank.com/gbo/xml/schemas/v1_0/"><eAI_HEADER><serviceName>GET.FINANCE.DETAIL</serviceName>...
您可以看到它不是有效的 XML:它需要在 getInstallmentHistoryReply
标签和 xmlns:
属性或整体看起来像一个较长的属性名称,前面没有适当的标签。
我建议您更改正则表达式以仅删除后面的空格 >
标签结束标记
[ad_2]
コメント