C# XmlNode值与InnerText
我正在为学校创建一个ping应用程序,其中包含一个充满URL的XML。 由于C# XmlNode值与InnerText,c#,.net,xml,C#,.net,Xml,我正在为学校创建一个ping应用程序,其中包含一个充满URL的XML。 由于XmlNode,我损失了一个小时。Value导致空值 然后我把它改成了InnerText,效果很好 现在我想知道有什么区别,因为MSDN这么说。Value返回节点的值,InnerText返回节点及其所有子节点的连接值 有人能给我解释一下吗 <sites> <site> <url>www.test.be</url> <email>test@test
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>
www.test.be
test@test.be
www.temp.be
temp@temp.be
www.lorim.ipsum
临时的address@domain.com
例如,如果您的XML看起来像Bar
,那么“Bar”实际上被视为一个单独的节点:一个XmlText
节点(从XmlNode
子类)。该XmlText
节点的Value
属性将是“Bar”
“Foo”被认为是XmlElement
(也从XmlNode
中细分)XmlNode.Value
根据节点的类型返回不同的内容。请参见显示元素
节点的值总是返回null
Foo节点的InnerText
返回“Bar”,因为它连接其子节点的值(在本例中,只有一个XmlText
节点)。关于XmlNodeType.Element的Value
属性,返回:
空。可以使用XmlElement.InnerText或XmlElement.InnerXml属性访问元素节点的值
XML规范对术语以及什么构成什么类型的XML对象非常挑剔。如前所述,元素
没有值。这是特定于属性
(可能还有一些其他节点类型),因为属性
有一个元素
没有的语法,即name='value'
如果您认为这令人困惑,请查看子节点和子节点之间的差异,或者根节点和文档元素之间的差异 我也有类似的情况。我所做的是,我选择了当前节点的第一个子节点并检查它是否为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");
}
}
由于url元素是叶节点,InnerText(也称为InnerXml)属性包含元素值。对于元素节点,value属性将为空,如msdn文档中所示。您可能需要发布XML文件的示例。@Frazelthomas,-.value和.InnerText之间的差异可以很容易理解,而无需查看他的XML。如果您调试并使用立即窗口,您可能可以节省大量调试时间。它允许您基于当前上下文执行代码,并将写出XElement的所有属性及其值。这种方法允许您轻松浏览对象图并验证值是否为null,但InnerText包含您的值。希望这有帮助。InnerXml是否可以返回null?从我的简短测试来看,情况并非如此,例如,当我创建一个节点时,显式地分配node.InnerXml=null然后测试node.InnerXml==null代码>它是假的。相反,node.InnerXml==string.Empty代码>是真的。这是我可以信赖的行为吗?MSDN文档对此没有说明。注意:选择TextNode的xpath应该是“Foo/text()”嗨,Robert!如何将序列化与此一起使用?如果我以您的Bar为例,我将有一个名为“Foo”的类,但我应该在其中序列化哪个属性?还有更多理由放弃XML而使用JSON。