作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试访问给定 xml 中第一级的元素。我正在使用下面的代码来访问它,但它首先为我提供了嵌套代码。
var xml = "<grading>" +
"<leap>" +
"<controlId>1</controlId>" +
"</leap>" +
"<controlId>2</controlId>" +
"</grading>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
var node = doc.DocumentElement.SelectSingleNode("//controlId").InnerText;
当我试图访问根节点内的值 2 时,它给了我值 1。我们有什么可以访问它的吗。
最佳答案
你的 XPath 表达式是
//controlId
这将找到名为controlId
的所有 后代。您只需要调用方法的元素的直接子元素,因此您应该使用
controlId
所以这是可行的:
var node = doc.DocumentElement.SelectSingleNode("controlId").InnerText;
但是,我强烈建议改用 LINQ to XML,作为更简洁的 XML API:
using System;
using System.Xml.Linq;
public class Program
{
public static void Main(string[] args)
{
var xml = @"
<grading>
<leap>
<controlId>1</controlId>
</leap>
<controlId>2</controlId>
</grading>";
XDocument doc = XDocument.Parse(xml);
XElement control = doc.Root.Element("controlId");
Console.WriteLine(control.Value); // 2
}
}
除非您真的想使用它的高级功能,否则我会避免使用 XPath。要仅按名称检索元素、属性等,LINQ to XML API 更简单且不易出错(如这个问题的存在所示)。
关于c# - 如何在 XML C# 中获取根级节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51650921/
我是一名优秀的程序员,十分优秀!