我们有这样的XML:
<Example>
<Node>Some text here
<ChildNode>Child 1</ChildNode>
<ChildNode>Child 2</ChildNode>
</Node>
</Example>我们正在使用XmlDocument来解析这一点。
当我们有"Node“元素的XmlNode时,XmlNode.InnerText将返回以下内容:
"Some text hereChild 1Child2"如果没有子节点的内部文本,我们如何获得Node元素的内部文本?我们并不想使用任何RegEx或字符串拆分来实现这一点。
注意:我们也不想切换到使用不同的类来解析这个XML,这将是太多的代码更改。
发布于 2011-01-17 15:49:24
var doc = new XmlDocument();
doc.LoadXml(xml);
var text = doc.SelectSingleNode("Example/Node/text()").InnerText; // or .Value返回
"Some text here\r\n "和text.Trim()返回
"Some text here"发布于 2011-01-17 15:54:09
不如:
XmlDocument d=new XmlDocument();
d.LoadXml(@"<Example>
<Node>Some text here
<ChildNode>Child 1</ChildNode>
<ChildNode>Child 2</ChildNode>
</Node>
</Example>");
var textNodeValues=d.DocumentElement
.FirstChild
.ChildNodes
.Cast<XmlNode>()
.Where(x=>x.NodeType==XmlNodeType.Text)
.Select(x=>x.Value);发布于 2011-01-17 15:54:31
您可以实现如下:
XmlDocument doc = new XmlDocument();
doc.LoadXml("<Example><Node>Some text here<ChildNode>Child 1</ChildNode><ChildNode>Child 2</ChildNode></Node></Example>");
XmlNode node = doc.SelectSingleNode( "Example/Node" );
if (node.HasChildNodes)
{
string value = node.FirstChild.Value;
}https://stackoverflow.com/questions/4714962
复制相似问题