[ad_1]
Saya ingin memangkas spasi di string xml tidak termasuk header namespace xml di c#. String xml saya seperti di bawah ini. Saya ingin memangkas nilai simpul xml saja tidak termasuk header namespace (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> </getInstallmentHistoryReply>
Apa yang saya coba:
Kode saya seperti di bawah ini
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);
Solusi 1
Dua hal – pertama, Anda perlu menghapusnya <pre>
dari xml Anda atau tidak akan diproses bahkan sebelum Anda mulai “memotongnya”.
Kedua, Anda tidak dapat menghapus semua spasi secara membabi buta: jika Anda melihat string yang Anda buat:
<getInstallmentHistoryReplyxmlns:NS1="urn:esbbank.com/gbo/xml/schemas/v1_0/"><eAI_HEADER><serviceName>GET.FINANCE.DETAIL</serviceName>...
Anda dapat melihat bahwa ini bukan XML yang valid: memerlukan spasi di antara getInstallmentHistoryReply
tag dan itu xmlns:
atribut atau keseluruhannya tampak seperti nama atribut yang lebih panjang tanpa tag yang tepat sebelumnya.
Saya menyarankan Anda mengubah regex Anda untuk hanya menghapus spasi setelah a >
penanda akhir tag
[ad_2]
コメント