帮助在C#中循环XML

时间:2010-09-08 02:52:03

标签: c# xml

我有一个看起来像这样的xml

<words>
     <word>word1</word>
     <word>word2</word>
     <word>word3</word>
     <word>word4</word>
</words>

我想循环遍历“word”标签,现在只输出innertext。 我该怎么做?

这是我现在正在做的事情但是说节点数列表是1

        string _badWordFileDocPath = //my file path;
        XmlDocument badWordDoc = new XmlDocument();
        badWordDoc.Load(_badWordFileDocPath);


        XmlElement root = badWordDoc.DocumentElement;
        XmlNodeList nodes = root.SelectNodes("/words");
        foreach(XmlNode node in nodes)
        {
            Console.WriteLine(node.InnerText);
        }

谢谢!

4 个答案:

答案 0 :(得分:4)

您正在选择根words节点本身,而不是子节点word。将/word添加到XPath:

XmlNodeList nodes = root.SelectNodes("/words/word");

答案 1 :(得分:2)

您需要向下移动节点树一层:

foreach(XmlNode node in nodes)
 {
     XmlNodeList innerNodes = node.SelectNodes("/word");
     foreach(Xmlnode innerNode in innerNodes )
     {
          Console.WriteLine(innerNode.InnerText);
     }
 }

答案 2 :(得分:2)

我建议使用System.Xml.Linq中的类来执行此任务:

XElement wordsElement = XElement.Parse(yourXmlText);

var words = from w in wordsElement.Elements("word")
            select w.Value;

答案 3 :(得分:1)

你的XPath中缺少/ word。

您也可以使用Linq(XDocument)来获取数据。