【问题标题】:asp.net xpath: select only certain attributesasp.net xpath:仅选择某些属性
【发布时间】:2010-11-08 12:03:00
【问题描述】:

我有一个从 xml 文件填充的 GridView,它具有以下结构:

<menu>
  <item id="1" name="home" page="default.aspx">
     *{...some stuff...}*
  <item>
  <item id="2" name="content" page="content.aspx">
     *{...some stuff...}*
  <item>
  <item id="3" name="user" page="user.aspx">
     *{...some stuff...}*
  <item>
<menu>

如你所见,这是我的应用程序的菜单。

如果我只是将该文件关联到 xmldatasource,然后关联到 GridView,它会(正确地)显示如下网格:

ID 名称页面

1 主页 default.aspx

2 内容 content.aspx

3 用户 user.aspx3 用户 user.aspx

如何将 xPath 查询设置为仅显示名称属性/字段?

这些我都试过了:

  1. 菜单/item@name
  2. 菜单/@name
  3. //@姓名

但没用

【问题讨论】:

  • 好问题,+1。有关问题的解释和完整的解决方案,请参阅我的答案。 :)
  • 我认为这不是 XPath 问题,而是 MS 数据绑定问题。来自msdn.microsoft.com/en-us/library/aa479341.aspx:看起来你需要设置asp:GridView元素的AutoGenerateColumns="False"属性,然后使用Columnsasp:BoundFieldchilds。

标签: asp.net xpath attributes


【解决方案1】:

我有一个 GridView 从 xml 文件,其中包含以下内容 结构:

<menu> 
  <item id="1" name="home" page="default.aspx"> 
     *{...some stuff...}* 
  <item> 
  <item id="2" name="content" page="content.aspx"> 
     *{...some stuff...}* 
  <item> 
  <item id="3" name="user" page="user.aspx"> 
     *{...some stuff...}* 
  <item> 
<menu>

这不是一个格式正确的 XML 文件 -- 结束标记必须有 sintax &lt;/tag&gt;,并且上面的文本中根本没有结束标记。

如何将 xPath 查询设置为 only 显示名称属性/字段?

这些我都试过了:

  1. 菜单/item@name
  2. 菜单/@name
  3. //@姓名
  1. 在语法上无效:定位步骤必须以/ 字符开头,并且item@name 之间没有/ 字符。

  2. 在语法上有效,但要求选择当前节点的所有 menu 元素的所有 name 属性。不幸的是,menu 没有 name 属性。

  3. 应该选择节点,但鉴于上面的文本根本不是格式良好的 XML 文档,这就解释了否定的结果。此外,这会选择整个文档中的所有 name 属性,无论它们是哪个元素——这并不是您想要的,尽管在这种类型的格式良好的文档上这可能会选择您想要的节点。

解决方案

第 1 步:更正您的 XML 文档:

<menu>
  <item id="1" name="home" page="default.aspx">
     *{...some stuff...}*
  </item>
  <item id="2" name="content" page="content.aspx">
     *{...some stuff...}*
  </item>
  <item id="3" name="user" page="user.aspx">
     *{...some stuff...}*
  </item>
</menu>

Step2:使用以下 XPath 表达式之一(还有更多可以选择所需节点):

/menu/item/@name

/*/item/@name

/*/*/@name

//@name

【讨论】:

  • 关于 xml:当然它的格式不是很好,因为我从头开始写它,它实际上在我的项目中(xml 更复杂,我只提到它的简化版本)。无论如何,谢谢,我会尝试这些查询,我会告诉你;)
猜你喜欢
  • 1970-01-01
  • 2013-11-30
  • 2019-02-08
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 2011-03-19
  • 1970-01-01
相关资源
最近更新 更多