0

我有这个 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"] 是空的。

有任何想法吗?

4

2 回答 2

1

首先,您的 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 更具可读性。

于 2018-11-27T14:41:27.490 回答
0

您需要遍历子节点以获得所需的结果,如下所示:

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)
        {

        }
    }
}
于 2018-11-27T14:39:03.767 回答