簡體   English   中英

如何在 xml 文件中獲取元素/屬性的名稱並使用 LINQ 將它們寫入另一個新的 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來output這個名字。 相反,我想創建一個新的 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\Desktop\123456.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\Desktop\1234567.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");

祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM