[英]XML get value from nextNode
我正在尝试从选定节点之后的节点获取值。 到目前为止,我已经能够以var的形式获取整个节点的信息,但是我仍然只限于如何获取值。
我的xml看起来像这样
<COLUMN>
<NAME>Addr1</NAME>
<VALUE>1234 my street</VALUE>
</COLUMN>
我得到这样的节点
var address = (from c in contactInfo.Descendants("NAME")
where c.Value == "Addr1"
select c.NextNode).Single();
谢谢
尝试:
(address as XElement).Value
当您需要XElement
, NextNode
返回一个XNode
:
var address = (from c in doc.Descendants("NAME")
where c.Value == "Addr1"
select c.NextNode).OfType<XElement>().Single().Value;
我宁愿避免将它们全部放在一行上,并执行以下类似操作以添加一些额外的检查:
var address = (from c in doc.Descendants("NAME")
where c.Value == "Addr1"
select c.NextNode).Single();
var element = address as XElement;
if (element != null) {
string value = element.Value;
}
var node = contactInfo.Descendants("COLUMN")
.SingleOrDefault(c => c.Element("NAME").Value.Equals("Addr1"))
if (node != null)
var result = node.Element("VALUE").Value;
您应该选择COLUMN
元素,而不要搜索NAME
元素:
var address = (from c in contactInfo.Descendants("COLUMN")
where (string)c.Element("NAME") == "Addr1"
select (string)c.Element("VALUE")).Single();
与方法语法相同:
var address = contactInfo.Descendants("COLUMN")
.Where(c => (string)c.Element("NAME") == "Addr1")
.Select(c => (string)c.Element("VALUE"))
.Single();
另外,您应该完全确保始终存在一个名称为Addr1
列元素。 否则, Single()
将引发异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.