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一起使用。
从内存中,可能包含一些错误:
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);