从 XNode 中读取值
本文关键字:读取 XNode | 更新日期: 2023-09-27 18:14:19
我有一些代码向我返回一个XNode,看起来像这样:
<File>
<Component>Main</Component>
<Path>C:'Main'</Path>
<FileName>main.txt</FileName>
</File>
我需要一些能够提取 Path 的值的 C# 代码(例如 C:''Main(。我知道如果我使用 XML 节点,我可以这样做:
String filePath = xmlNode["Path"].InnerText;
有谁知道XNode的等价物是什么?任何帮助都非常感谢!
您是否必须让它返回XNode
而不是XElement
?使用XElement
它比使用XNode
更简单:
string filePath = fileElement.Element("Path").Value;
这将找到第一个Path
元素,如果没有元素,则会抛出NullReferenceException
。如果您很乐意获得null
如果没有,另一种选择是:
string filePath = (string) fileElement.Element("Path");
如果你真的被XNode
困住了,你要么必须投到XElement
,要么可能XContainer
。
您可以将XNode转换为XElement以访问其属性,我的示例:
XNode lastNode = myXElement.LastNode;
//if I want to get the 'ID' attribute
string id = (lastNode as XElement).Attribute("ID").Value;
将 XNode 转换为 XElement 适用于单个元素以检索其值或属性。但是您将无法使用myXelement.Elements("XXX"(来获取嵌套元素。为此,您可以使用 xmlNode.Nodes((。
这应该有效:
var nodes = xmlNode.Nodes();//Get all nodes under 'File'
var fileNameNode = nodes.Where(el => ((XElement)el).Name.LocalName == "FileName")
.FirstOrDefault();
string filePath = ((XElement)fileNameNode).Value;
你可以使用这个:
XElement xtr = XElement.Load("path/to/your/xml/file");
String filePath = xtr.Descendants("Path").Single().Value;
如果导入 System.Xml.XPath,则可以在 XNode 对象上使用如下 XPathSelectElement:
String component = xmlNode.XPathSelectElement("Component");
String path = xmlNode.XPathSelectElement("Path");
String fileName = xmlNode.XPathSelectElement("FileName");
这取决于抽象XNode
是什么对伏对象。来自XNode Class:
XNode 是以下类型的抽象公共基类: XComment XContainer:可以是XDocument或XElement XDocumentType X指令 XText
因此,您需要检查是否可以将其强制转换为XDocument
或XElement
,并使用它们的方法,或使用LINQ to XML:
例如:
- 使用 LINQ 查询 XDocument 的最佳方式?
- 查询 XDocument vs. 查询 XElement (C#(
XNode xnode
string value = (xnode as XElement).Value;
我们可以从 XElement 对象中获取值,因此我们需要先将 XNode 转换为 XElement
应该工作