我有一个看起来像
的xml文件<?xml version="1.0"?>
<notes>
<note>
<to>Tove</to>
<from add="abc1">Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note>
<to add="xyz1">Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this <rref add="10">10</rref> weekend!</body>
<pol add="adt10"/>
</note>
</notes>
我希望从具有该属性的所有不同节点获取属性add
的所有值(自闭节点除外),即输出应该是值的列表/数组abc1,xyz1,10 。
如何使用LINQ-TO-XML执行此操作?
属性的Descendants
方法是否等效?
答案 0 :(得分:1)
您需要从具有属性add
的后代进行过滤,而不是包含add
属性的自闭节点。
类似的东西:
var nodess = from note in Doc.Descendants()
where note.Attribute("add") !=null && !note.IsEmpty
select note.Attribute("add").Value;
foreach(var node in nodess)
{
Console.WriteLine(node);
}
您需要包含以下两者中的usings
:
using System.Xml.Linq;
using System.Linq;
ABC1
XYZ1
10
根据您的查询,在关闭标记分开但空白但没有值的情况下将其排除:
where note.Attribute("add") !=null && (!note.IsEmpty || !String.IsNullOrEmpty(note.Value))