我有点难以使用 XPath 或 LINQ 从 XML 打印值,这对 XPath 和 XML 解析也是新的, 在这里查看了几个示例,但没有任何帮助,因为它们都有具有不同属性名称的 XML,对于我的情况,XML 是不同的:
<Entities TotalResult="3">
<Entity Type="test-set-folder">
<Fields>
<Field Name="id">
<Value>12457</Value>
</Field>
<Field Name="parent-id">
<Value>0</Value>
</Field>
<Field Name="last-modified">
<Value>2015-03-09 14:09:57</Value>
</Field>
<Field Name="description">
<Value/>
</Field>
<Field Name="view-order"/>
<Field Name="name">
<Value>.NET</Value>
</Field>
</Fields>
</Entity>
<Entity Type="test-set-folder">
<Fields>
<Field Name="id">
<Value>15487</Value>
</Field>
<Field Name="parent-id">
<Value>0</Value>
</Field>
<Field Name="last-modified">
<Value>2015-03-15 13:00:02</Value>
</Field>
<Field Name="description">
<Value/>
</Field>
<Field Name="view-order"/>
<Field Name="name">
<Value>Python</Value>
</Field>
</Fields>
</Entity>
</Entities>
它具有相同的属性 Field
但不同的 Name
。
谁能帮我打印属性的 Name
及其 Value
。
我需要遍历每个实体并打印其Name : Value
。
到目前为止,我已经尝试过同时使用 Xpath 和 LINQ:
var doc = XDocument.Load("XMLFile1.xml");
foreach (var child in doc.Element("Field Name").Elements())
{
Console.WriteLine(child.Name);
}
但说真的,我不太了解它,所以我的方法是完全错误的。
我的预期输出是:
Id: 12457
parent-id: 0
last-modified:2015-03-09 14:09:57
description:
view-order:
name: .NET
下一个实体也一样。
最佳答案
由于某些字段缺少值元素,您可以尝试这样做:
XElement element = XElement.Load("XmlFile.xml");
var query = from field in element.Descendants("Field")
select new
{
NameAttribute = field.Attribute("Name").Value,
Value = field.Descendants("Value").Any() ?
field.Element("Value").Value : "No Value"
};
var namesAndValues = query.ToList()
关于c# - 如何使用 LINQ 或 XPath 从 XML 中获取打印的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32375881/