如何通过给出节点id来读取xml中的节点值

ram*_*ram 2 .net c# xml

<GlobalNavigation>
<primarylink>
<secondarylink>
    <linkid>1</linkid>
    <linkName>3</linkname>
    <secondary>
        <leftnav>
            <linkid>left1</linkid>
            <linkName>linktext</linkname>
        </leftnav>
    </secondary>
</secondarylink>
</GlobalNavigation>
Run Code Online (Sandbox Code Playgroud)

我想通过给出linkid来读取leftnav linkname.

Jon*_*eet 6

最简单的方法是使用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;
Run Code Online (Sandbox Code Playgroud)

换一种说法:

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