XmlNode值与InnerText的区别是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

我正在为学校创建一个ping应用程序,它的XML中充满了URL。因为XmlNode.Value结果是空值。

然后我把它改成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>
提问于
用户回答回答于

例如,如果您的xml看起来像<Foo>Bar</Foo>然后,“Bar”实际上被认为是一个单独的节点:XmlText节点(从XmlNode)。XmlText节点

Value属性为“Bar”。

“foo”被认为是XmlElement(也是从XmlNode)XmlNode.Value根据节点的类型返回不同的内容。这表明Value总是回来nullElement节点。

InnerText的foo节点返回“Bar”,因为它连接其子节点的值。

用户回答回答于

我所做的就是选择当前节点的第一个子节点并检查它是否是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");
    }
}

扫码关注云+社区