【发布时间】:2017-02-04 07:06:06
【问题描述】:
例如,我有这个 xml 字符串:
<?xml version="1.0" encoding="utf-8"?>
<data>
<text>How to get <bold>all</bold> this string's content?</text>
</data>
我想在对象数组中获取所有这些元素(对于每个对象我都有一个类),而不会丢失它们的结构:
[1] (TextClass; where bold = false) How to get
[2] (TextClass; where bold = true) all
[3] (TextClass; where bold = false) this string's content?
我现在使用XmlDocument 和XmlNode 类分别是InnerText 或InnerXml。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("example.xml");
foreach (XmlNode child in xmlDoc.DocumentElement.ChildNodes)
{
string chName = child.Name; // text
string text = child.InnerText; // How to get all this string's content?
string xml = child.InnerXml; // How to get <bold>all</bold>this string's content?
}
有可能吗?
【问题讨论】:
-
你到底在问什么?你有孩子。你缺少什么?遍历
ChildNodes并相应地创建您自己的类实例。将它们添加到List<T>或其他。或者使用 LINQ。 -
@EdPlunkett 我想要得到的是文本序列,其中我可能有一个 XmlNode,它表明这个文本是风格化的。通过迭代 throw 子节点,我将丢失这个序列,因为我将分别获得文本和风格化文本。
-
什么文本序列?你的那个有什么问题?你能给我看一个在
ChildNodes中出现乱序的子节点序列的例子吗? “彼此分开”是什么意思? -
哦,等一下,您正在查看文档根目录的子项。您需要“数据”节点的子节点。将该代码放入递归函数中。如果
child.ChildNodes.Count > 0,则递归。 -
或者只是 xmlDoc.SelectSingleNode("//data") 并遍历他的孩子。
标签: c# xml xml-parsing xmldocument xmlnode