XmlDocument获取子项

时间:2014-12-04 12:50:05

标签: c# parsing xmldocument

我试图从这个XML文档中获取子项:

XML CODE HERE:

<RUNNABLES>
  <RUNNABLE-ENTITY UUID="1661dcae-c4b9-4f47-8b68-cb99c677bdd6">
    <SHORT-NAME>RCtApElg_mlm</SHORT-NAME>
      <DESC>
    <L-2 L="FOR-ALL">The unique runnable entity of the Main Lights SW Component</L-2>
  </DESC>
</RUNNABLES>

到目前为止,这就是我所做的:

这里的C#代码

XmlDocument xmlReader = new XmlDocument();
xmlReader.PreserveWhitespace = false;
xmlReader.Load(strfilename);

XmlNodeList elemList = xmlReader.SelectNodes("/RUNNABLES/RUNNABLE-ENTITY/SHORT-NAME");

我如何指定读取SHORT-NAME标签并获取&#34; RCtApElg_mlm&#34;价值结果?

3 个答案:

答案 0 :(得分:0)

我认为你需要使用:
.Value
XmlNodeList elemList = xmlReader.SelectNodes("/RUNNABLES/RUNNABLE-ENTITY/SHORT-NAME").Value;

答案 1 :(得分:0)

如果您修复了样本xml(它错过了RUNNABLE-ENTITY的闭包标记),这应该可行:

XmlDocument xmlReader = new XmlDocument();
xmlReader.PreserveWhitespace = false;
xmlReader.Load(strfilename);

XmlNodeList elemList = xmlReader.SelectNodes("//RUNNABLES/RUNNABLE-ENTITY/SHORT-NAME");
string value = elemList.Item(0).InnerText;

答案 2 :(得分:0)

这就是我所做的:

                    XmlNode node = xmlReader.DocumentElement.FirstChild;
                    XmlNodeList lstPackage = node.ChildNodes;

                    for (int i = 0; i < 2; i++)
                    {
                        //MessageBox.Show(lstPackage[i].Name.ToString());
                        if (lstPackage[i].Name == "AR-PACKAGE")
                        {
                            aux++;
                        }
                        if(aux==2)
                        {
                            aux = 0;
                            XmlNodeList lstShortname = lstPackage[i].FirstChild.ChildNodes;
                            // Display the value of its first child node
                            for (int j = 0; j < lstShortname.Count; j++)
                                MessageBox.Show(lstShortname[j].InnerText);
                        }
                    }

不知道它是否是最好的选择,但我得到了结果。

谢谢!