筛选节点文本中包含大于字符的XML节点



我有一个来自XML文件的LINQ查询。我正在过滤掉某些具有空子节点的节点,但也希望过滤包含非法字符的节点。

从下面的示例中,您可以看到我正在尝试筛选其中也具有大于字符<的节点。(参见XML示例中的child3(

然而,这是行不通的。我可以测试节点内的其他字符,如*,但<不起作用。

如何修改LINQ查询以检查节点内是否存在大于字符的<

<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
                      };

看看这个。这对您来说是一个很好的起点,您可以使用WHERE关键字来过滤您的XML数据

http://www.switchonthecode.com/tutorials/introduction-to-linq-simple-xml-parsing

最新更新