【发布时间】:2016-06-07 13:53:37
【问题描述】:
我正在使用C# 开发一个应用程序,并尝试完成我从JSON 获得的XML。为了使XML 对我的应用程序有效,我需要将具有相同名称的元素分组到父元素下。
比如我得到了这个XML
<root>
<row>
<id>0001</id>
<type>credit</type>
<investment>1000</investment>
<ppr>0.83</ppr>
<candidate>
<id>5001</id>
<name>Hugo</name>
</candidate>
<candidate>
<id>5002</id>
<name>Jack</name>
</candidate>
<candidate>
<id>5005</id>
<name>Kate</name>
</candidate>
</row>
我需要将所有名称为候选的元素分组,在父节点候选下,像这样
<root>
<row>
<id>0001</id>
<type>credit</type>
<investment>1000</investment>
<ppr>0.83</ppr>
<candidates>
<candidate>
<id>5001</id>
<name>Hugo</name>
</candidate>
<candidate>
<id>5002</id>
<name>Jack</name>
</candidate>
<candidate>
<id>5005</id>
<name>Kate</name>
</candidate>
</candidates>
</row>
但这是我的问题:我不知道可以从 JSON 收到的名称。所以我需要在不知道“候选”节点名称的情况下进行此比较并完成 XML。任何我能收到的名字我都需要这个。
同样在本例中,XML 只有 2 个级别,但它可以有任意数量的级别。我可以毫无问题地遍历XML:
public void findAllNodes(XmlNode node)
{
Console.WriteLine(node.Name);
foreach (XmlNode n in node.ChildNodes)
findAllNodes(n);
}
如何比较和分组节点?
【问题讨论】: