XMLString需要更改格式

时间:2012-03-02 18:07:13

标签: c# .net xml xml-parsing

我的xml DATA就像:(这是xmlstring而不是xmlfile,我需要转换而不保存....)

 <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。

2 个答案:

答案 0 :(得分:1)

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

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(...);

答案 1 :(得分:0)

你可以尝试使用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);