c# - 如何获取 xml 文件中元素/属性的名称并使用 LINQ 将它们写入另一个新的 xml 文件
问题描述
我是 C# 的新手。现在我正在尝试获取 xml 文件中某些特定元素的名称,并为它们创建一个新的 xml 文件。我已经尝试过使用 LINQ,这样我就可以解析 xml 并获取我想要的一些元素的名称。我不想使用 console.writeline 来输出这个名字。相反,我想创建一个新的 xml 文件并将这些名称保存在其中。谁能给我一些提示?以下是我要解析的示例数据:
<root>
<Package>
<Class name="EnterpriseArchitect">
<Operation/>
</Class>
<Class name="ZachmanFramework">
<Operation/>
</Class>
</Package>
</root>
我想获取元素类的属性名称并将其保存在一个新的 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");
祝你好运!
推荐阅读
- csv - 我在哪里可以访问在 windows 10 ubuntu 应用程序上创建的文件?
- amazon-web-services - cp replace 命令正在更改内容类型
- c# - 带有接口参数的接口方法,其中实现有自己的类作为参数
- c - 调试时的以下 C 语句将 k 的值显示为 -2。为什么?实际上,它应该显示 -2.000000
- java - 同时链接多个方法调用?提供的示例
- php - 限制用户角色以仅更改 Woocommerce 中的某些订单状态
- uwp - 了解 ParallaxView 的工作原理
- javascript - 为什么我可以在此表单中选择多个单选按钮?
- c++ - C++ 的向量如何分配内存
- mac-address - 从 arp-scan -l 中仅提取 MAC 地址