【问题标题】:How to read xml node names using C#如何使用 C# 读取 xml 节点名称
【发布时间】:2016-05-06 20:49:12
【问题描述】:

我是这个领域的新手。请告诉我如何获取或显示

书店、书籍、书名、价格(我需要 DISTINCT 输出)

从以下 XML 文件中,我如何读取和打印 DISTINCT xml 节点。

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>
  <book>
    <title lang="en">Harry Potter</title>
    <price>29.99</price>
  </book>

  <book>
    <title lang="en">Learning XML</title>
    <price>39.95</price>
  </book>
</bookstore>

【问题讨论】:

    标签: c# xml xpath


    【解决方案1】:

    Linq to XML 很容易做到:

    var xdoc = XDocument.Load(fileName);
    var names = xdoc.Descendants() // get all elements from xml
                    .Select(e => e.Name.LocalName) // select local name of each element
                    .Distinct(); // pick only distinct names
    

    对于您的示例 xml 输出是

    [
      "bookstore",
      "book",
      "title",
      "price"
    ]
    

    Descendants() 与XPathSelectElements("//*") 相同

    【讨论】:

    • @NithinPaul 他们命名不同,所以他们不一样 :) 点击链接并阅读 LINQ for xml 的快速介绍。是的,您需要 using System.Xml.Linq 和 using System.Linq 进行投影和不同的调用。
    • @Sergery 是的,我找到了。感谢它工作得很好。 :)
    【解决方案2】:

    试试这个

        public void Load()
    {
        var doc = XDocument.Load(filePath);
    
        foreach(var unit in doc.Descendants("Unit"))
        {
            string str = string.Format("ID: {0}\r\nName:{0}", unit.Element("id").Value, unit.Element("name").Value);
            MessageBox.Show(str);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多