Xml之Linq遍歷


很多時候我們需要用到Xml文件,但是什么是Xml文件呢?
以下我們用一個例子來說明:testResult.xml文件

<?xml version="1.0" encoding="utf-8" ?>
<Columns>
<column id="序號">
<name>序號</name>
</column>
<column id="檢驗項目">
<name>檢驗項目</name>
</column>
<column id="單位">
<name>單位</name>
</column>
<column id="標准要求">
<name>標准要求</name>
</column>
<column id="檢驗結果">
<name>檢驗結果</name>
</column>
<column id="結論">
<name>結論</name>
</column>
</Columns>

以上就是一個Xml文件,我們知道,Xml文件是用來存儲數據的,那么我們如何遍歷這些數據呢?
其實最簡單的方法,就是使用Linq:

       private void GetTestResultXml()
{
List<string> iTestResultXml=new List<string>();
//定義並從xml文件中加載節點(根節點)
XElement rootNode = XElement.Load(@"..\..\Xml\testResult.xml");
//查詢語句: 獲得根節點下name子節點(此時的子節點可以跨層次:孫節點、重孫節點......)
IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("column")
select target;
foreach (XElement node in targetNodes)
{
iTestResultXml.Add(node.Value);
}
}

這樣我們就可以獲得<column/>標簽里所有的數據了,並把他們存儲到列表iTestResultXml中。
testResult.xml文件中,我們看到,<column/>標簽設置了本身的id,而此id並不是他的數據,而是他的一個屬性,
那么如果我們想獲得他的屬性而不是他標簽里的內容該如何獲得呢?

private void GetTestResultXml()
{
List<string> iXmlID = new List<string>();
//定義並從xml文件中加載節點(根節點)
XElement rootNode = XElement.Load(@"..\..\Xml\testResult.xml");
//查詢語句: 獲得根節點下name子節點(此時的子節點可以跨層次:孫節點、重孫節點......)
IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("column")
select target;
foreach (XElement node in targetNodes)
{
iXmlID.Add(node.Attribute("id").Value); //獲取指定屬性的方法
}
}

這樣我們就獲取了<column/>標簽里id屬性的列表iXmlID。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM