簡體   English   中英

如何在 C# 中獲取 XML 節點的字符串

[英]How to get the String of a XML node in C#

在 XML 文檔中輸入代碼:

<foo>
  <bar><para> test </para> </bar>
  <bar>text</bar>
  <bar>stackoverflow</bar>
</foo>

我正在嘗試解析它,並且只獲取 bar 中的字符串; 通過使用這種方式:

[節點為 foo 的函數]

foreach (XmlNode subNode in node.ChildNodes)
{

 if (subNode.Name == "bar")
 {
    if (!String.IsNullOrWhiteSpace(subNode.InnerText))
     Debug.WriteLine(subNode.Name + " - " subNode.InnerText);
 }

}

但是它給了我測試

謝謝

這就是您正在尋找的(根據您更新的問題進行編輯)

XDocument doc = XDocument.Load(path to your xml file);
XNamespace ns = "http://docbook.org/ns/docbook";

var result = doc.Root.Descendants(ns + "para")
                     .Where(x => x.FirstNode.NodeType == System.Xml.XmlNodeType.Text)
                     .Select(x => x.Value)
                     .ToList();

在您更新的 xml 中,我看到您正在使用命名空間,因此您的節點名稱不是para ,而是theNameSpace + "para" 命名空間在 xml 文件的第一行中定義。 你也可以看到這個樣本。

你想“測試”嗎? 嘗試以下:

            string input =
                "<foo>" +
                  "<bar><para> test </para> </bar>" +
                  "<bar>text</bar>" +
                  "<bar>stackoverflow</bar>" +
                "</foo>";


            XDocument doc = XDocument.Parse(input);

            List<string> bars = doc.Descendants("bar").Where(x => x.NextNode != null).Select(x => (string)((XElement)x.NextNode)).ToList();

暫無
暫無

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

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