我有一个看起来像这样的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);
}
谢谢!
答案 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)来获取数据。