首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XmlNode.InnerText

XmlNode.InnerText
EN

Stack Overflow用户
提问于 2011-01-17 15:38:27
回答 4查看 16.2K关注 0票数 1

我们有这样的XML:

代码语言:javascript
复制
<Example>
  <Node>Some text here
    <ChildNode>Child 1</ChildNode>
    <ChildNode>Child 2</ChildNode>
  </Node>
</Example>

我们正在使用XmlDocument来解析这一点。

当我们有"Node“元素的XmlNode时,XmlNode.InnerText将返回以下内容:

代码语言:javascript
复制
"Some text hereChild 1Child2"

如果没有子节点的内部文本,我们如何获得Node元素的内部文本?我们并不想使用任何RegEx或字符串拆分来实现这一点。

注意:我们也不想切换到使用不同的类来解析这个XML,这将是太多的代码更改。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-17 15:49:24

代码语言:javascript
复制
var doc = new XmlDocument();
doc.LoadXml(xml);
var text = doc.SelectSingleNode("Example/Node/text()").InnerText; // or .Value

返回

代码语言:javascript
复制
"Some text here\r\n    "

text.Trim()返回

代码语言:javascript
复制
"Some text here"
票数 6
EN

Stack Overflow用户

发布于 2011-01-17 15:54:09

不如:

代码语言:javascript
复制
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);
票数 1
EN

Stack Overflow用户

发布于 2011-01-17 15:54:31

您可以实现如下:

代码语言:javascript
复制
    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;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4714962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档