簡體   English   中英

在C#的根元素中使用命名空間解析XML

[英]Parsing XML with a Namespace in the root element in C#

由於根目錄中的“ xmlns”屬性,我無法在C#中解析以下XML。

<CaptureResponse xmlns="http://mws.amazonservices.com/schema/OffAmazonPayments/2013-01-01">
    <CaptureResult>
        <State>Open</State>
    </CaptureResult>
</CaptureResponse>

例如,如何使用上述xml檢查C#中元素的存在? 以下不起作用。

        XmlDocument doc = new XmlDocument();
        doc.LoadXml(response);
        if (doc.SelectSingleNode("CaptureResponse") != null) 
        {}

需要一個XmlNamespaceManager。 您創建一個並在XML文檔中添加對命名空間的引用。

AddNamespace()的“ s”是名稱空間前綴的示例,可以在選擇查詢中使用它,而不必為每個節點添加完整的名稱空間作為前綴。 S可以替換為您希望使用的任何前綴。

XmlNamespaceManager nsMgr = new XmlNamespaceManager(doc.NameTable);
nsMgr.AddNamespace("s", "http://mws.amazonservices.com/schema/OffAmazonPayments/2013-01-01");
XmlNode myNode = doc.SelectSingleNode("s:CaptureResponse", nsMgr);

您的XPath模棱兩可。 嘗試這個:

XmlNode Root = doc.SelectSingleNode("/CaptureResponse");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM