XDocument parsing
本文关键字:parsing XDocument | 更新日期: 2023-09-27 18:25:16
我在c#中创建了一个自定义XDocument,它看起来像下面的
<Filters datetimegenerated="28.07.2013 23:12PM">
<SimpleStringFilter column="xxx" table="yyy" groupby="True" seperatereport="true">
good,bad,ugly
</SimpleStringFilter>
<NumaricalFilter column="zzz" table = "mmm">zzz = 100 or zzz= 50</NumaricalFilter>
</Filters>
当我试图解析StringFilterTags时,用c#解析它似乎不起作用,这是我的代码,但我从上面的示例中得到了零计数
var filters = from simplestringfilter in xdoc.Root.Element("Filters").Elements("SimpleStringFilter")
let column = simplestringfilter.Attribute("column")
let table = simplestringfilter.Attribute("table")
let groupby = simplestringfilter.Attribute("groupby")
let seperatecolumnby = simplestringfilter.Attribute("seperatereport")
let filterstringval = simplestringfilter.Value
select new
{
Column = column,
Table = table,
GroupBy = groupby,
SeperateColumnBy = seperatecolumnby,
Filterstring = filterstringval
};
我做错了什么?
您的查询在根元素检查之外进行搜索,以查看它是否有子Filters
元素。由于根是Filters
元素,这显然失败了,这就是为什么您没有得到任何结果。
有两种方法可以解决这个问题。只是不要在根目录下搜索Filters
,您的查询应该可以。
var filters =
from simplestringfilter in xdoc.Root.Elements("SimpleStringFilter")
...
IMHO编写它的更好方法是不查询根,而是查询文档本身。它看起来会更自然。
var filters =
from simplestringfilter in xdoc.Element("Filters")
.Elements("SimpleStringFilter")
...