如何获取XmlNode中的文本?见下文:
XmlNodeList nodes = rootNode.SelectNodes("descendant::*");
for (int i = 0; i < nodes.Count; i++)
{
XmlNode node = nodes.Item(i);
//TODO: Display only the text of only this node,
// not a concatenation of the text in all child nodes provided by InnerText
}
我最终想做的是在每个节点的文本中加上“HELP:”。
答案 0 :(得分:9)
最简单的方法可能是迭代节点的所有直接子节点(使用ChildNodes
)并测试每个节点的NodeType
以查看它是Text
还是{{ 1}}。不要忘记可能有多个文本节点。
CDATA
(正如仅供参考,如果您可以使用.NET 3.5,LINQ to XML可以使用 lot 更好。)
答案 1 :(得分:3)
在节点的子节点中搜索NodeType
Text
的节点,并使用该节点的Value
属性。
请注意,您还可以使用text()
节点类型测试选择带有XPath的文本节点。
答案 2 :(得分:1)
您可以阅读xmlnode的InnerText属性
阅读node.InnerText
答案 3 :(得分:1)
检查
您也可以查看在撰写“阅读器”时获得的选项。
xml文件
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<ISO_3166-1_List_en xml:lang="en">
<ISO_3166-1_Entry>
<ISO_3166-1_Country_name>SINT MAARTEN</ISO_3166-1_Country_name>
<ISO_3166-1_Alpha-2_Code_element>SX</ISO_3166-1_Alpha-2_Code_element>
</ISO_3166-1_Entry>
<ISO_3166-1_Entry>
<ISO_3166-1_Country_name>SLOVAKIA</ISO_3166-1_Country_name>
<ISO_3166-1_Alpha-2_Code_element>SK</ISO_3166-1_Alpha-2_Code_element>
</ISO_3166-1_Entry>
</ISO_3166-1_List_en>
和读者真的很基本但很快
XmlTextReader reader = new XmlTextReader("c:/countryCodes.xml");
List<Country> countriesList = new List<Country>();
Country country=new Country();
bool first = false;
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: // The node is an element.
if (reader.Name == "ISO_3166-1_Entry") country = new Country();
break;
case XmlNodeType.Text: //Display the text in each element.
if (first == false)
{
first = true;
country.Name = reader.Value;
}
else
{
country.Code = reader.Value;
countriesList.Add(country);
first = false;
}
break;
}
}
return countriesList;