如何用条件读取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中的节点

您错过了一个重要的部分:名称空间声明。

在原始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);