簡體   English   中英

XML從nextNode獲取價值

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

當您需要XElementNextNode返回一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM