簡體   English   中英

讀取xml元素值沒有cdata?

[英]Read xml Element value WITHOUT cdata?

我有這個簡單的xml:

<AllBands>
  <Band>
    <Name ID="1234" started="1962">Beatles<![CDATA[lalala]]></Name>
    <Last>1</Last>
    <Salary>2</Salary>
  </Band>
  <Band>
    <Name ID="222" started="1968">Doors<![CDATA[lalala]]></Name>
    <Last>1</Last>
    <Salary>2</Salary>
  </Band>
</AllBands>

我想從Name元素中讀取“ bealtes ”值

通過

using (var stream = new StringReader(result))
{
    XDocument xmlFile = XDocument.Load(stream);
    var query = from c in xmlFile.Descendants("Band") select c;

    foreach (XElement band in query)
    {
     if (band.Element("Name").Value ==...) // this expression is beatleslalala 
                                           // and not beatles alone...

    }
}

這是為什么? 為什么他包括cdata? 我怎么才能得到“披頭士樂隊”?

您的<Name>元素節點包含兩個子節點:文本節點和CDATA節點。

Value的元素節點為級聯的子節點的所有值。

如果需要文本節點的值,則需要獲取文本節點的Value ,而不是元素。

請注意,在讀取XML文件時區分文本節點和CDATA節點是很不尋常的。 文件的作者應該能夠使用他們喜歡的任何東西。

您有一個文本值和一個CDATA節點作為Name的子代,這就是為什么。

如果你在名稱節點內挖掘,你將能夠找到這兩個部分,但你可能想要重新修改你的xml結構

<Name ID="1234" started="1962">Beatles<Lyrics><![CDATA[lalala]]></Lyrics></Name>

實際上,它的xsd會變得混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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