【问题标题】:XDocument parsingXDocument 解析
【发布时间】:2013-07-28 02:22:44
【问题描述】:

我已经在 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 子元素。
  • @JeffMercado 将其更改为 xdoc.Root.Elements("SimpleStringFilter") 工作正常,非常感谢请添加答案。

标签: c# xml linq xml-parsing linq-to-xml


【解决方案1】:

您的查询正在搜索根元素,检查它是否有子 Filters 元素。由于根 Filters 元素,这显然失败了,这就是为什么你没有得到任何结果。

有两种方法可以解决此问题。只是不要从根目录中搜索Filters,您的查询应该没问题。

var filters =
    from simplestringfilter in xdoc.Root.Elements("SimpleStringFilter")
    ...

恕我直言,更好的编写方法是不查询根目录,而是查询文档本身。它看起来会更自然。

var filters =
    from simplestringfilter in xdoc.Element("Filters")
                                   .Elements("SimpleStringFilter")
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多