我有一个来自XML文件的LINQ查询。我正在筛选出某些空子节点,但也希望过滤包含非法字符的节点。
从下面的示例中,您可以看到我正在尝试过滤其中也包含大于字符<
的节点。 (参见XML示例中的child3)
然而,这不起作用。我可以测试节点内的其他字符,如*
,但<
不起作用。
如何修改LINQ查询以检查节点内的字符<
是否大于。{/ p>
<Root>
<Header>
<total>123456</total>
</Header>
<Transactions>
<Txn>
<child1>BSmith</value1>
<child2>Bob Smith</child2>
<child3>Acme Company<</child3>
<child4>Suite 3B</child4>
<child5>1234 Main Street</child5>
</Txn>
...
</Transactions>
</Root>
var root = XElement.Parse(xmlText);
var elementsThatCanBeEmpty = new HashSet<XName>
{
XName.Get("child4")
};
var transactionList = from transactions in
root.Elements(XName.Get("Transactions"))
.Elements().AsEnumerable()
where transactions.Elements().Any
(
el =>
(String.IsNullOrEmpty(el.Value) || el.Value.Contains("*")) &&
!elementsThatCanBeEmpty.Contains(el.Name)
)
select new
{
UserName = transactions.Element(XName.Get("child1")).Value
};
答案 0 :(得分:0)
看看这个。这是一个非常好的起点,您可以使用WHERE关键字来过滤XML数据
http://www.switchonthecode.com/tutorials/introduction-to-linq-simple-xml-parsing