如果子节点元素相等,如何添加父节点?

亚历克斯·戴夫

我有非常大的 xml 数据集。因此,其中"SECTION"包含"Piece"节点并且它们具有相等的"SECTION name="RF1WB-1", SECTION name="RF1WB-2",SECTION name="RF1WB-3"因此"Parent",如果"Piece"标记包含与第二个 XML 中显示的值相同的值,我想将它们添加为父节点

如果子节点元素包含相同的值,如何添加父节点?

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>
礼萨·阿海伊

您可以按<Piece>标签对元素进行分组,然后以<Parent>这种方式将它们作为标签的元素

var xml = XDocument.Load(@"input file");

var result = new XElement(xml.Root.Name, xml.Root.Attributes().ToArray(),
    xml.Root.Elements().GroupBy(x => x.Element("Piece").Value.Trim()).Select(x =>
        new XElement("Parent", new XAttribute("name", x.Key), x))
    );

result.Save(@"output file");

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

对于父元素,有两个子元素。如果子项1的.text()匹配,如何对子项2执行操作

如何在不跳转到元素加载位置的情况下将子节点添加到父节点?

检查父节点是否相等(与子节点无关)

如何使用JavaScript中的按钮动态添加/删除父节点?

将元素添加到节点(如果不存在)

如何在php的父节点中添加xml

如何使用XSLT将父节点添加到一组节点

如何访问父节点内的子节点

如何使用python将嵌套的子节点添加到xml文档中的父节点?

如何排除父元素和子元素节点

如果子节点包含特定字符串,则删除XML节点

如果子级包含某些字符串链,如何更改父级元素的CSS类

如果子元素被隐藏,如何隐藏父元素?

jQuery到PHP:如果子元素超过2个,则将选择器类添加到父元素

如何遍历先前的父节点并获取XPath中元素的值?

jQuery-如果子元素没有文本,如何删除父元素?

将文件添加到Subversion,同时自动添加父目录节点(如果尚未添加)

如果子节点没有值,则删除父节点

PowerShell:如果子节点符合特定条件,则删除xml节点

如何使用C#在XML中添加父节点

jQuery - 如果子元素具有特定的 css 类,如何将 css 添加到父元素

如果子节点等于数组值,则删除 XML 节点

如何查找嵌套元素 XML 标记的父节点,Python 3.6

如果选中 ztree 中的任何子节点,如何取消选中父节点?

如果子节点具有特定属性,则删除父节点

Bash - 如果子节点的属性值不等于特定值,则删除 XML 节点?

如果子节点重复,我如何删除节点

如果子节点包含特定字符串,则删除 xml 中的父节点

如果子对象为空,如何在python3中删除父json元素