我有一个从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 home default.aspx
2内容content.aspx
3个用户user.aspx3用户user.aspx
如何将xPath查询设置为仅显示名称属性/字段?
我试过那些:
但没有效果
答案 0 :(得分:0)
我有一个填充的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 </tag>
,并且上述文本中根本没有结束标记。
如何仅将xPath查询设置为 显示名称属性/字段?
我试过那些:
- menu / item @ name
- menu / @ name
- // @名称
醇>
在语法上无效:位置步骤必须以/
字符开头,/
和item
之间没有@name
个字符。
在语法上有效,但要求选择作为当前节点的子元素的所有name
元素的所有menu
属性。很遗憾,menu
没有name
属性。
应该选择节点,但鉴于上面的文字根本不是格式良好的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