如何解决如何使用LINQ获取xml文件中的元素/属性名称并将其写入另一个新的xml文件中
我是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\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");
祝你好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。