【发布时间】:2017-11-02 10:32:10
【问题描述】:
我有大量的 xml 数据。因此,"SECTION" 包含 "Piece" 节点,它们对于 "SECTION name="RF1WB-1"、SECTION name="RF1WB-2"、SECTION name="RF1WB-3" 具有相同的值。因此,如果 "Piece" 标记包含与第二个 XML 中所示相同的值,我想将 "Parent" 添加为它们的父节点。
如果子节点元素包含相同的值,如何添加父节点?
XmlDocument doc = new XmlDocument();
doc.Load("..\\MFAB1.xml");
XmlNodeList xnList = doc.SelectNodes("MFAB.ini/SECTION");
foreach (XmlNode xn in xnList)
{
if (xn.HasChildNodes)
{
foreach (XmlNode item in xn.SelectNodes("Piece"))
{
if (xn.ChildNodes[0].InnerText.ToString().Contains(s3))
{
d1.Piece = xn.ChildNodes[0].InnerText.ToString();
}
______________
______________
______________
}
}
}
输入文件:
<?xml version="1.0" encoding="UTF-8"?>
<MFAB.ini>
<SECTION name="RF1WB-1">
<Piece>
RF1-1
</Piece>
</SECTION>
<SECTION name="RF1WB-2">
<Piece>
RF1-1
</Piece>
</SECTION>
<SECTION name="RF1WB-3">
<Piece>
RF1-1
</Piece>
</SECTION>
<SECTION name="RF1-2WB-1">
<Piece>
RF1-2
</Piece>
</SECTION>
<SECTION name="RF1-2WB-2">
<Piece>
RF1-2
</Piece>
</SECTION>
</MFAB.ini>
预期的输出文件:
我需要的是:
<?xml version="1.0" encoding="UTF-8"?>
<MFAB.ini>
<Parent name = "RF1-1">
<SECTION name="RF1-1WB-1">
<Piece>
RF1-1
</Piece>
</SECTION>
<SECTION name="RF1-1WB-2">
<Piece>
RF1-1
</Piece>
</SECTION>
<SECTION name="RF1-1WB-3">
<Piece>
RF1-1
</Piece>
</SECTION>
</Parent>
<Parent name = "RF1-2">
<SECTION name="RF1-2WB-1">
<Piece>
RF1-2
</Piece>
</SECTION>
<SECTION name="RF1-2WB-2">
<Piece>
RF1-2
</Piece>
</SECTION>
</Parent>
</MFAB.ini>
【问题讨论】:
-
所以您希望根据自己的算法对数据进行分组?
-
是的。也尝试了 LINQ,但没有运气。根据“Piece”节点元素需要将父元素添加到其中。是的,为他们定义了类。我也得到了所有的数据和元素。只需为其添加“父”标签。谢谢。
-
你把它们分组?你有任何定义你的 xml 的类吗?
-
是的,我现在更新了。
标签: c# .net xml linq linq-to-xml