首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问XMLNode

访问XMLNode
EN

Stack Overflow用户
提问于 2014-08-26 18:04:15
回答 1查看 66关注 0票数 0

我想读一些XML文件的值。我能够读取一些值,但我想获得<tools></tools>-tags之间的信息。

代码语言:javascript
复制
XmlNodeList xnList = xml.SelectNodes("/instructions/Steps");
foreach (XmlNode xn in xnList)
{

    XmlNodeList xnChildList = xn.ChildNodes;
    foreach (XmlNode xnc in xnChildList)
    {
        MessageBox.Show("ID: " + xnc["ID"].InnerText + "Desc: " + xnc["desc"].InnerText);
        //this one is working so far!


        //I tried to create a new XMLNodeList

        XmlNodeList testNodeList = xnc.SelectNodes("/tools");
        foreach (XmlNode node in testNodeList)
        {
            MessageBox.Show(node["tool"].InnerXml);
        }
    }
}

但这不管用。我该如何处理工具部分的问题?

XML文件如下所示:

代码语言:javascript
复制
<instructions>
    <Steps QualificationID="12,3">
                <Step>
                    <ID>1.1</ID>
                    <desc>desc</desc>
                    <tools>
                        <tool ID = "1" name = "10Zoll Steckschl" />
                        <tool ID = "2" name = "5Zoll Steckschl" />
                    </tools>
                </Step>
                <Step>
                    <ID>1.2</ID>
                    <desc>desc2</desc>
                    <tools>
                        <tool ID = "3" name = "11Zoll Steckschl" />
                        <tool ID = "4" name = "54Zoll Steckschl" />
                    </tools>
                </Step>
    </Steps>
    <Steps QualificationID="1223,3">
                <Step>
                    <ID>2.1</ID>
                    <desc>desc3</desc>
                    <tools>
                        <tool ID = "5" name = "14Zoll Steckschl" />
                        <tool ID = "6" name = "2Zoll Steckschl" />
                    </tools>
                </Step>
                <Step>
                    <ID>2.2</ID>
                    <desc>desc4</desc>
                    <tools>
                        <tool ID = "7" name = "13Zoll Steckschl" />
                        <tool ID = "8" name = "4Zoll Steckschl" />
                    </tools>
                </Step>
    </Steps>
</instructions>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-26 18:06:54

我强烈怀疑这就是问题所在:

代码语言:javascript
复制
XmlNodeList testNodeList = xnc.SelectNodes("/tools");

前面的斜杠将它带回到根节点--您只想在xnc下查找xnc元素。

代码语言:javascript
复制
XmlNodeList testNodeList = xnc.SelectNodes("tools");

这就是为什么我个人更喜欢使用LINQ :)

代码语言:javascript
复制
XDocument doc = ...;
foreach (var step in doc.Root.Elements("Steps").Elements("Step"))
{
     MessageBox.Show(string.Format("ID: {0} Desc: {1}",
                     step.Element("ID").Value, step.Element("desc").Value);

     foreach (var tool in step.Elements("tools"))
     {
         ...
     }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25512346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档