如何用条件读取xml中的节点
本文关键字:节点 xml 读取 何用 条件 | 更新日期: 2023-09-27 18:17:26
这是我的XML文件
<problem>
<sct:fsn>Myocardial infarction (disorder)</sct:fsn>
<sct:code>22298006</sct:code>
<sct:description>Heart attack</sct:description>
<sct:description>Infarction of heart</sct:description>
<sct:description>MI - Myocardial infarction</sct:description>
<sct:description>Myocardial infarct</sct:description>
<sct:description>Cardiac infarction</sct:description>
<sct:description>Myocardial infarction</sct:description>
</problem>
如何选择Code和fsn ?如果我有描述。请帮忙,谢谢
您错过了一个重要的部分:名称空间声明。
在原始XML文件中,可能有一个或多个类似xmlns:xxx
的属性。这些属性具有特殊的含义,因为它们允许在同一个文件中使用两个不同的XML 词汇表。
查找具有名称空间的元素(注意xxx:
部分;在您的示例中,它是sct:
),您需要使用XmlNamespaceManager
类,如下面的示例所示。
注意:属性值(本例中为"example")必须与AddNamespace
方法中使用的值保持一致。
var xml = new XmlDocument();
xml.LoadXml(@"
<problem xmlns:sct='example'>
<sct:fsn>Myocardial infarction (disorder)</sct:fsn>
<sct:code>22298006</sct:code>
<sct:description>Heart attack</sct:description>
<sct:description>Infarction of heart</sct:description>
<sct:description>MI - Myocardial infarction</sct:description>
<sct:description>Myocardial infarct</sct:description>
<sct:description>Cardiac infarction</sct:description>
<sct:description>Myocardial infarction</sct:description>
</problem>");
var xmlns = new XmlNamespaceManager(xml.NameTable);
xmlns.AddNamespace("sct", "example");
// same as xmlns:sct= 'example'
// This is important: ---------------------------------V
Console.WriteLine(xml.SelectSingleNode("//sct:code", xmlns).InnerText);