这是我的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?如果我有描述。 请帮助谢谢
答案 0 :(得分:0)
你遗漏了一个重要的部分:命名空间声明。
在原始XML文件中,您可能有一个或多个属性,如xmlns:xxx
。这些属性具有特殊含义,因为允许在同一文件中使用两个不同的XML 词汇表。
要查找具有命名空间的元素(请注意xxx:
部分;在您的情况下,它是sct:
),您需要使用XmlNamespaceManager
类,就像在示例中一样下面。
警告:属性值(在本例中为“示例”)必须与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);