[英]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.