February
5th,
2018
接續上篇的基本操作,這篇主要使用 LINQ to XML 來取得 CDATA 標籤內的資料內容。
目錄:
系列文完整範例程式碼請參考 poychang/Demo-Linq-To-Xml。
XML 標準中提供了 CDATA 區段,做為一種通知剖析器的方法,當 XML 剖析器遇到開頭的 <![CDATA[
時,會將接下來的內容當成字元,而不會嘗試將其解譯成 XML 標籤實體。
此外,CDATA 區段的內容不能出現 ]]>
,因為這個字串引發 CDATA 的結束訊號。
取得 CDATA 資料
混和前面幾篇文章的操作技巧,載入檔案後,先使用 DescendantNodes()
取得所有 XML 的節點資料,透過 LINQ 方式找到節點類類型 XmlNodeType.CDATA
的節點(更多節點類型請參考這裡),再將內容取出來即可。
var queryCData = from element in XDocument.Load(filePath).DescendantNodes()
where element.NodeType == System.Xml.XmlNodeType.CDATA
select element.Parent?.Value.Trim();
foreach (var data in queryCData)
{
Console.WriteLine(data);
}
這個使用方式很常會遇到,在使用 XML 作為通訊格式時,為了清楚標示傳輸的”文字內容”在哪裡,就會使用 CDATA 區段作為標識,因此這個技巧一定要知道。
請參考
08-ExtractDataFromCData
專案的 Program.cs
參考資料: