XMLString需要更改格式

本文关键字:格式 XMLString | 更新日期: 2023-09-27 18:26:24

我的xml数据如下:(这是xmlstring而不是xml文件,我需要在不保存的情况下进行转换……)

 <ProductGroups>
 <ProductGroup>
 <Name>ABC</Name>
 <Id>123</Id>
 </ProductGroup>
 <ProductGroup>
 <Name >xyz</Name>
 <Id>456</Id>
 </ProductGroup>
 <ProductGroup>
 <Name>PQR</Name>
 <Id>789</Id>
 </ProductGroup>
     .
     .
 </ProductGroups>

我想像这个一样转型

<PRODUCTGROUPS>
<Name ID="123"> ABC</NAME>
<Name ID="456"> XYZ</NAME>
<Name ID="789">PQR</NAME>
   .
   .
</PRODUCTGROUPS>

我正在将C#与.NET一起使用。

XMLString需要更改格式

从内存中,可能包含一些错误:

var doc = XDocument.Load(...);
var groups = doc.Descendants(ProductGroup);
var newDoc = new XElement("ProductGroups", 
    groups.Select(pg => new XElement("Name", 
            new XAttribute("Id", pg.Element("Id").Value), 
            pg.Element("Name").Value) ));

newDoc.Save(...);

您可以使用linq2xml:(编辑:与Henk Holterman大致相同)进行尝试

XDocument sourceDocument = XDocument.Load("D:''XmlFile.xml");
XDocument targetDocument = new XDocument();
var productGroupsElement = new XElement("ProductGroups");
sourceDocument.Descendants("ProductGroup").ToList().ForEach(productGroup =>
{
    if (productGroup.Element("Name") != null && productGroup.Element("Id") != null)
    {
        var nameElement = new XElement("Name", productGroup.Element("Name").Value);
        nameElement.Add(new XAttribute("Id", productGroup.Element("Id")));
        productGroupsElement.Add(nameElement);
    }
});
targetDocument.Add(productGroupsElement);
var resultXml = targetDocument.ToString(SaveOptions.None);