XmlNode Value vs InnerText

Tom*_*ove 71 .net c# xml

我正在为学校创建一个ping应用程序,其中包含一个充满URL的XML.我失去了一个小时,因为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>
Run Code Online (Sandbox Code Playgroud)

Rob*_*evy 85

例如,如果你的XML看起来像<Foo>Bar</Foo>那么"Bar"实际上被认为是一个单独的节点:一个XmlText节点(从中分类XmlNode).该节点的Value属性为XmlText"Bar".

"Foo"被认为是XmlElement(也属于XmlNode).XmlNode.Value根据节点的类型返回不同的东西.请参见本表这表明Value总是返回nullElement节点.

InnerText,因为它会将其子女的值(在这种情况下,只有一个foo的节点返回"栏" XmlText节点).

  • 注意:选择TextNode的xpath是"Foo/text()" (25认同)

小智 7

我有类似的情况.我做的是,我选择了当前节点的第一个子节点并检查它是否是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");
    }
}
Run Code Online (Sandbox Code Playgroud)