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