Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XML读取-节点访问_C#_Xml - Fatal编程技术网

C# XML读取-节点访问

C# XML读取-节点访问,c#,xml,C#,Xml,嗨 如果我将上述内容作为xml结构的一部分,并且我希望找到一个标记,其中父标记有一个“Chemist Name”的标签,而其内部标记有一个John,Smith的标签,这样我就可以获得searchid,那么最好的方法是什么 有没有一种方法可以让我不去高效地循环遍历文档中的每个xml值,直接说 “给我一个节点,其父节点是化学家名称,其子节点的标签是john smith” 感谢将XPath用于以下查询: <node label="Chemist Name"> <node la

如果我将上述内容作为xml结构的一部分,并且我希望找到一个标记,其中父标记有一个“Chemist Name”的标签,而其内部标记有一个John,Smith的标签,这样我就可以获得searchid,那么最好的方法是什么

有没有一种方法可以让我不去高效地循环遍历文档中的每个xml值,直接说

“给我一个节点,其父节点是化学家名称,其子节点的标签是john smith”


感谢将XPath用于以下查询:

<node label="Chemist Name">
    <node label="John,Smith" searchId="1122" />
</node>
你可以在C#中这样使用它:


其中
xml
是包含xml数据的字符串。如果要直接从光盘加载XML,请改为使用。

使用XPath进行以下查询:

<node label="Chemist Name">
    <node label="John,Smith" searchId="1122" />
</node>
你可以在C#中这样使用它:


其中
xml
是包含xml数据的字符串。如果要直接从光盘加载XML,请改用xpath。

。你应该阅读更多关于,和。如果您遇到困难,请发回,我们可以提供帮助。

xpath是解决此问题的方法。你应该阅读更多关于,和。如果您遇到困难,请发回,我们可以提供帮助。

xml文档的节点在哪里?非常感谢您的帮助-我想这是一个我需要学习的方便工具。你会说它更有效还是这种方法也有开销?@ricki:如果你的XML文档很大,这不是最好的方法,因为
XmlDocument
首先读取整个文件,然后应用XPath查询。如果您有一个巨大的XML文档,那么像
XmlReader
这样的SAX解析器更合适。但总的来说,XPath是一种方法,如果你想找到一个节点,它就是为此而发明的。@Daniel Hilgarth-我用参数替换了名称,我得到了一个无效的令牌异常,我真的看不出我做错了什么-“//node[@label=Chemist Name]/node[@label=John,Smith]'有一个无效的令牌。”@ricki:属性值(化学家姓名和John,Smith)需要加引号。xml文档的节点在哪里?非常感谢-我想这是一个我需要学习的方便工具。你会说它更有效还是这种方法也有开销?@ricki:如果你的XML文档很大,这不是最好的方法,因为
XmlDocument
首先读取整个文件,然后应用XPath查询。如果您有一个巨大的XML文档,那么像
XmlReader
这样的SAX解析器更合适。但总的来说,XPath是一种方法,如果你想找到一个节点,它就是为此而发明的。@Daniel Hilgarth-我用参数替换了名称,我得到了一个无效的令牌异常,我真的看不出我做错了什么-“//node[@label=Chemist Name]/node[@label=John,Smith]'有一个无效的令牌。”@ricki:属性值(化学家姓名和John,Smith)需要加引号。
var doc = new XmlDocument();
doc.LoadXml(xml);
var node = doc.SelectSingleNode(
        @"//node[@label = ""Chemist Name""]/node[@label = ""John,Smith""]");