簡體   English   中英

通過ID的FInd元素,然后獲取XML文檔中的內容

[英]FInd element by ID then get content in XML document

我有一個XML文檔

<?xml version="1.0" encoding="utf-8" ?>
<data>
  <string id="test-text">Some sample text from XML</string>
  <string id="test-text2">Some more sample text</string>
</data>

我已將其加載到XmlDocument對象中,並且嘗試使用id獲取文本。 我可能在這里遺漏了一些非常明顯的東西,但這就是我目前正在嘗試這樣做的方式。

    XmlElement elem = doc.GetElementById("test-text");
    return elem.Value;

您可能需要elem.InnerText而不是elem.Value.

從類文檔中, InnerText 獲取或設置節點及其所有子的串聯值 ,而Value是從XmlNode繼承的屬性,對屬性節點,文本節點等很有用,但實際上不適用於XmlElement等節點。 在根據您的文檔構建的DOM樹中,要查找的XmlElement將包含一個Text節點,其Value是您嘗試檢索的字符串。

GetElementById僅適用於通過DTD定義的ID屬性(不太可能出現這種情況,對於您的示例絕對不適用):

...該產品版本僅支持DTD中定義的版本。 除非在DTD中定義,否則名稱為“ ID”的屬性的類型不是ID。 未知屬性是否為ID類型的實現應返回null。

您需要帶有屬性檢查的基本XPath:

var d = new XmlDocument();
d.LoadXml(@"<data>
  <string id='test-text'>Some sample text from XML</string>
  <string id='test-text2'>Some more sample text</string>
</data>");
var elem = d.SelectSingleNode("//*[@id='test-text']");
Console.WriteLine(elem.InnerText);

現場演示

暫無
暫無

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

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