[ad_1]
أريد تقليص المسافة في سلسلة XML باستثناء رأس مساحة اسم XML في C#. سلسلة XML الخاصة بي هي على النحو التالي. أريد تقليم قيم عقدة XML وحدها باستثناء رأس مساحة الاسم (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>
ما حاولت:
الكود الخاص بي هو على النحو التالي
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 الخاص بك وإلا فلن تتم معالجته قبل أن تبدأ في “قصه”.
ثانيًا، لا يمكنك إزالة جميع المسافات بشكل أعمى: إذا نظرت إلى السلسلة التي أنشأتها:
<getInstallmentHistoryReplyxmlns:NS1="urn:esbbank.com/gbo/xml/schemas/v1_0/"><eAI_HEADER><serviceName>GET.FINANCE.DETAIL</serviceName>...
يمكنك أن ترى أنه ليس XML صالحًا: فهو يحتاج إلى مسافة بين getInstallmentHistoryReply
العلامة و xmlns:
السمة أو يبدو الكل وكأنه اسم سمة أطول مع عدم وجود علامة مناسبة تسبقه.
أود أن أقترح عليك تغيير التعبير العادي الخاص بك لإزالة المسافة البيضاء فقط بعد a >
علامة نهاية العلامة
[ad_2]
コメント