Xml之Linq遍歷
來自: http://cnbin.github.io/blog/2016/02/14/xmlzhi-linqbian-li/
很多時候我們需要用到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。
本文由用戶 Demetrius22 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!