首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >XmlNode值与InnerText值

XmlNode值与InnerText值
EN

Stack Overflow用户
提问于 2011-10-24 22:46:18
回答 4查看 65.5K关注 0票数 73

我正在用一个充满URL的XML为学校创建一个ping应用程序。我浪费了一个小时,因为XmlNode.Value导致了null。

然后我把它改成了InnerText,它工作得很好。

现在我想知道有什么不同,因为MSDN说.Value返回节点的值,而InnerText返回节点及其所有子节点的连接值。

有人能给我解释一下吗?

<sites>
<site>
    <url>www.test.be</url>
    <email>test@test.be</email>
</site>
<site>
    <url>www.temp.be</url>
    <email>temp@temp.be</email>
</site>
<site>
    <url>www.lorim.ipsum</url>
    <email>interim.address@domain.com</email>
</site></sites>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-24 23:04:32

例如,如果您的XML看起来像<Foo>Bar</Foo>,那么"Bar“实际上被认为是一个单独的节点:一个XmlText节点(从XmlNode继承而来)。XmlText节点Value属性将是"Bar“。

"Foo“被认为是一个XmlElement (也是XmlNode的子类)。XmlNode.Value根据节点的类型返回不同的内容。参见this table,它显示Value总是为Element节点返回null

Foo节点的InnerText返回"Bar“,因为它连接了它的子节点的值(在本例中,只有一个XmlText节点)。

票数 89
EN

Stack Overflow用户

发布于 2012-08-31 19:27:40

我也遇到过类似的情况。我所做的是,选择当前节点的第一个子节点,检查它是否为XMLtext,然后显示它的值。

XmlNodeList xNList = xDOC.SelectNodes("//" + XMLElementname);

foreach (XmlNode xNode in xNList)
{
    if (xNode.ChildNodes.Count == 1 && 
        xNode.FirstChild.GetType().ToString() == "System.Xml.XmlText")
    {
        XMLElements.Add(xNode.FirstChild.Value);
    }
    else
    {
        XMLElements.Add("This is not a Leaf node");
    }
}
票数 7
EN

Stack Overflow用户

发布于 2011-10-25 02:22:59

XML规范对术语和什么构成什么类型的XML对象非常挑剔。如前所述,element没有值。这是特定于attribute (可能还有其他几种节点类型)的,因为attribute有一种element没有的语法,即name='value'

如果您认为这很令人困惑,请查看子节点和后代之间的区别,或者根节点和文档元素之间的区别!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7877609

复制
相关文章

相似问题

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