如何从 XmlDocument 获取节点的 InnerText 和 InnerXml?

How to get InnerText and InnerXml of a Node from XmlDocument?

例如,我有这个 xml 字符串:

<?xml version="1.0" encoding="utf-8"?>
<data>
   <text>How to get <bold>all</bold> this string's content?</text>
</data>

我想在对象数组中获取所有这些元素(对于每个对象我都有一个 class),而不丢失它们的结构:

[1] (TextClass; where bold = false) How to get 
[2] (TextClass; where bold = true) all
[3] (TextClass; where bold = false) this string's content?

我现在使用的 XmlDocumentXmlNode classes 分别是 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?
}

可能吗?

对于这种工作,我认为使用 LINQ to XML 更容易。

在您的示例中,类似以下的内容可能会起作用(具体取决于您想要实现的目标):

XDocument doc = XDocument.Parse(xml);
var textClasses = from n in doc.Descendants("text").DescendantNodes()
                  where n.NodeType == XmlNodeType.Text
                  select new { text = ((XText)n).Value, bold = n.Parent?.Name == "bold" };

还有一个 .net fiddle 这样您就可以快速看到结果。