c# - 使用 linq to xml 解析 XML

标签 c# linq-to-xml

我想使用 linq to XML 解析一些大的 XML 文件,但我不知道我该怎么做。 我想阅读所有 <name> <dac> 之后的标签标签。我必须提到我有很多 <name> XMl 文件中的标记我只想阅读 <dac> 之后的标记.我如何使用 linq to xml 执行此操作?

这是我的 XML 文件的一个简单示例:
我希望代码返回这样的值:(SSS, HHH, HHH Panel)

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

<installationTree>
  <folder>
    <id>1</id>
    <name>Company</name>
    <full-path>Door List / Company</full-path>
    <nodes>
      <controller>
        <id>9</id>
        <name>9016 Panel</name>
        <description/>        
        <full-path>Door List / Company / 9016 Panel</full-path>
        <nodes>
          <dac>
            <isOneDoorController>false</isOneDoorController>
            <id>9</id>
            <name>SSS</name>
            <description/>
            <address>1</address>
            <active>true</active>
            <externalId>ID:9_20111123_121106</externalId>
            <mode>standard</mode>    

            <doorCodes/>
            <full-path>Door List / Company / 9016 Panel / SSS</full-path>
            <nodes/>
          </dac>
          <dac>
            <isOneDoorController>false</isOneDoorController>
            <id>10</id>
            <name>HHH</name>
            <description/>
            <address>2</address>
            <active>true</active>

            <doorCodes/>
            <full-path>Door List / Company / 9016 Panel / HHH</full-path>
            <nodes/>
          </dac>
        </nodes>
      </controller>
      <oneDoorController>
        <id>8</id>
        <name>HHH Panel</name>
        <description/>
        <serialnumber>00:06:8e:30:24:24</serialnumber>
        <timezone>Iran</timezone>
        <active>true</active>
        <docUpdater/>
        <nodes>
          <dac>
            <isOneDoorController>true</isOneDoorController>
            <id>8</id>
            <name>HHH Panel</name>
            <description/>
            <address>1</address>
            <active>false</active>            
            <doorCodes/>
          </dac>
          <full-path>Door List / Company / HHH Panel</full-path>
          <nodes/>
        </nodes>
      </oneDoorController>
    </nodes>
  </folder>
</installationTree>

最佳答案

您需要加载 XML 文档并编写 @Henk Holterman 建议的语句。

string file = @"c:\file.xml";
XDocument doc = XDocument.Load(file);
var names= doc.Root.Descendants("dac").Elements("name");

foreach (var t in names)
   Console.WriteLine(t.Value); 

关于c# - 使用 linq to xml 解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8502978/

相关文章:

c# - 在 Entity Framework 存储库中使用选择器

c# - 了解 csproj 程序集引用

c# - 如何使用数组项的父节点从 JSON 生成 XML

xml - 如何使用 LINQ to XML 包含 CData?

c# - XDocument 将制表符更改为空格

c# - 通用数字类型

c# - 仁慈SSH.NET : How to create symlinks?

c# - 如何找到无法加载 "A procedure imported by ' xxx.dll 的源。”异常?

utf-8 - 在 C# 中将 Linq to Xml 文件保存为 ANSI 而不是 UTF-8 (Ivy)

c# - 将 LINQ 转换为 XML