c# - 如何通过给节点id读取xml中的节点值

标签 c# .net xml

<GlobalNavigation>
<primarylink>
<secondarylink>
    <linkid>1</linkid>
    <linkName>3</linkname>
    <secondary>
        <leftnav>
            <linkid>left1</linkid>
            <linkName>linktext</linkname>
        </leftnav>
    </secondary>
</secondarylink>
</GlobalNavigation>

我想通过提供 linkid 来读取 leftnav 链接名。

最佳答案

最简单的方法是使用 LINQ to XML:

var doc = XDocument.Load(...);

string linkId = "left1";
var linkName = doc.Descendants("leftnav")
                  .Elements("linkid")
                  .Where(x => x.Value == linkId)
                  .Single()
                  .Parent.Element("linkName").Value;

换句话说:

  • 查看每个 leftnav 元素
  • 查看其正下方的每个 linkid 元素
  • 找到具有所需值的 linkid 元素
  • 应该恰好是其中之一(您可能希望在此处使用其他选项,这将改变解决方案的其余部分)。选择这个 linkid 元素。
  • 取父元素
  • 找到它下面的第一个linkName元素
  • 提取值(即其中的文本)

关于c# - 如何通过给节点id读取xml中的节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5897657/

相关文章:

c# - 使用 NLog 从 Hangfire 计划的后台作业记录日志

javascript - 如何将js中的数组转换为C#中的数组?

c# - MVC5/C# : Pass LINQ inner Join query to view model

c# - 在 asp.net C# 中验证日期的最简单方法是什么?

.net - 用于 block 上传的 Azure PutBlockAsync 和 PutBlockListAsync

c# - 使用 xmldocument 中的 xpath 选择注释之间的节点

c# - 有没有办法将 xml 转换为 json?

java - 安卓 :xml file not working

c# - 如何在 LINQ 中执行以下操作

c# - 如果插入一条记录失败,删除所有先前插入的行,是否可以在事务中进行?