如何使用 LINQ 获取 xml 文件中 elements/attributes 的名称并将它们写入另一个新的 xml 文件

How to get the name of elements/attributes in xml files and write these into another new xml file using LINQ

我是 c# 新手。现在我正在尝试获取 xml 文件中某些特定元素的名称,并为这些创建一个新的 xml 文件。 我试过使用 LINQ,这样我就可以解析 xml 并获取我想要的一些元素的名称。 我不想使用 console.writeline 来输出这个名字。相反,我想创建一个新的 xml 文件并将这些名称保存在其中。 谁能给我一些提示? 以下是我要解析的示例数据:

<root>
    <Package>
        <Class name="EnterpriseArchitect">
            <Operation/>
        </Class>
        <Class name="ZachmanFramework">
            <Operation/>
        </Class>
    </Package>
</root>

我想获取元素 Class 的属性名称并将其保存在新的 xml 文件中,如下所示:

<root>
<EnterpriseArchitect/>
<ZachmanFramework/>
</root>

以下是我的c#代码,但是我达不到目标:

XDocument xdoc = XDocument.Load(@"C:\Users\jsc\Desktop3456.xml");
XDocument xNew = new XDocument();
var datatype = xdoc.Root.Elements("Package").Elements("Class")
            
foreach (var dut in datatype)
{
    var dataTypeName = dut.Attribute("name").Value;
    xNew.Add(new XElement(dataTypeName));
}
            
xNew.Save(@"C:\Users\jsc\Desktop34567.xml");   

请阅读我对问题的评论。

这应该有效:

XDocument srcdoc = XDocument.Load("sourceFileName.xml");
List<XElement> names = srcdoc.Descendants("Class")
    .Select(x=> new XElement(x.Attribute("name").Value))
    //.Distinct() //uncomment this if duplicate values aren't allowed
    .ToList();

XDocument newdoc = new XDocument();
XElement root = new XElement("root");
root.Add(names);
newdoc.Add(root);   
newdoc.Save("newFileName.xml");

祝你好运!