كيفية قطع المسافة في سلسلة XML باستثناء رأس مساحة اسم XML في C#؟

[ad_1]

أريد تقليص المسافة في سلسلة XML باستثناء رأس مساحة اسم XML في C#. سلسلة 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: السمة أو يبدو الكل وكأنه اسم سمة أطول مع عدم وجود علامة مناسبة تسبقه.
أود أن أقترح عليك تغيير التعبير العادي الخاص بك لإزالة المسافة البيضاء فقط بعد a > علامة نهاية العلامة

[ad_2]

コメント

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