簡體   English   中英

從xml文件C#中提取嵌套節點

[英]Extracting nested nodes from xml file c#

我有這個xml文件:

<table head="Film">
<row>
    <id>USD</id><jan>Jan</jan><feb>Feb</feb><mar>Mar</mar><apr>Apr</apr><maj>May</maj><jun>Jun</jun><jul>Jul</jul><aug>Aug</aug><sep>Sep</sep><okt>Oct</okt><nov>Nov</nov><dec>Dec</dec><sum>Year</sum>
</row>
<row>
    <id>2018</id><jan>7629</jan><feb>6433</feb><mar>5573</mar><apr>3676</apr><maj>2545</maj><jun>2542</jun><jul>266</jul><aug>276</aug><sep>2690</sep><okt>371</okt><nov>5446</nov><dec>754</dec><sum>52731</sum>
</row>

我正在嘗試提取每個月的單個值。 我試過了

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load("model.xml"); 
XmlNodeList nodeList = xmlDoc.GetElementsByTagName("table");
foreach (XmlNode node in nodeList) // for each <testcase> node
{
    Console.WriteLine(node["row"].InnerText);
}

這是一個例外,因為node [“ row”]為空。

有任何想法嗎?

首先,您的XML無效。 您需要在那里有一個</table>

//In this example GetXml() just returns your XML
var doc = XDocument.Parse(GetXml());
var rows = doc.Descendants("table").Elements("row").ToList();

foreach(var element in rows[1].Elements()){
    Console.WriteLine(element?.Value);
}

現在,這只是基於XML的基本示例。 您可能希望它更強大。 您會發現我正在用LINQ向您展示這一點,我覺得它比XmlDocument更易讀。

您需要遍歷子節點以獲得所需的結果,如下所示:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("model.xml");
XmlNodeList nodeList = xmlDoc.GetElementsByTagName("table");
foreach (XmlNode node in nodeList) // for each <testcase> node
{
    foreach (XmlNode row in node.ChildNodes)
    {
        foreach (XmlNode mon in row.ChildNodes)
        {

        }
    }
}

暫無
暫無

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

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