4
我從XML文件中獲取LINQ查詢。我正在過濾出某些有空子節點的節點,但也希望過濾包含非法字符的節點。在節點文本中過濾包含大於號字符的XML節點
從下面的示例中,您可以看到我正試圖過濾其中也包含大於號字符<
的節點。 (請參閱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
};
那豈不是<文件中是非法 - 也就是說,不是有效的XML?它應該被編碼。如果它被編碼,你應該能夠查找編碼值。 –
您發佈的XML無效,因此代碼的第一行應該引發異常,並且不能將LINQ to XML用於「XML」之類的內容。 – svick
@ schroedingers-cat,現在你提到它,是的,這將是非法的。第三方公司向我們發送這個xml文件,我正在檢查文件中的不一致和空節點。恰巧,最終用戶可以在一個字段內輸入一個<。那麼當生成XML文件時,我們將它與<節點內部的< – Turp