<AccessUrl>
<Url>/User/Index</Url>
<Url>/EmailAccounts/Index</Url>
<Url>/Registration/Index</Url>
</AccessUrl>
我有一个xml文件。我想用它来搜索一个字符串。我为它编写了一个C#代码。
string Url="/User/Index";// or One of the above value from file. var CheckPermission = (from a in doc.Elements("AccessUrl") where a.Element("Url").Value.Contains(Url) select a).Any();
但它只适用于文件中的第一个Url值。但是,如果我改变string Url="/EmailAccounts/Index";
。它甚至没有显示任何匹配,即使xml文件中存在url值。我尝试了很多,但还没有成功。
答案 0 :(得分:2)
这是因为a.Element("Url")
为您提供了具有指定名称的第一个子元素。你应该用所有的孩子来代替:
a.Elements("Url").Any(u => u.Value.Contains(Url))
答案 1 :(得分:0)
这是因为你打电话:
where a.Element("Url")
这将返回第一个匹配元素。
来自文档:
获取具有指定System.Xml.Linq.XName的第一个(按文档顺序)子元素
你需要使用这样的东西来检查所有元素:
var CheckPermission = (from a in doc.Descendants("Url")
where a.Value.Contains(Url)
select a).Any();
答案 2 :(得分:0)
这似乎有效。
string url="/EmailAccounts/Index";// or One of the above value from file.
var checkPermission = xml.Elements("AccessUrl").Elements("Url").Any(x => x.Value == url);