Làm cách nào để cắt bớt khoảng trắng trong chuỗi XML ngoại trừ tiêu đề vùng tên XML trong C#?

lập trình


Tôi muốn cắt bớt khoảng trắng trong chuỗi xml ngoại trừ tiêu đề vùng tên xml trong C#. Chuỗi xml của tôi như sau. Tôi muốn cắt riêng các giá trị nút xml ngoại trừ tiêu đề không gian tên (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>

Những gì tôi đã thử:

Mã của tôi là như dưới đây

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

Giải pháp 1

Hai điều – thứ nhất, bạn cần loại bỏ <pre> từ xml của bạn nếu không nó sẽ không xử lý trước khi bạn bắt đầu “cắt” nó.

Thứ hai, bạn không thể xóa tất cả khoảng trắng một cách mù quáng: nếu bạn nhìn vào chuỗi bạn đã tạo:

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

bạn có thể thấy rằng đó không phải là XML hợp lệ: nó cần một khoảng trắng giữa getInstallmentHistoryReply thẻ và xmlns: thuộc tính hoặc toàn bộ trông giống như một tên thuộc tính dài hơn không có thẻ thích hợp trước nó.
Tôi khuyên bạn nên thay đổi biểu thức chính quy của mình để chỉ xóa khoảng trắng sau > điểm đánh dấu kết thúc thẻ

コメント

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