2010-11-08 100 views
1

我從一個XML文件,它具有以下結構填充一個GridView:asp.net的XPath:只選擇某些屬性

<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. 菜單/項@名
  2. 菜單/ @名稱
  3. // @名

,但沒有奏效

+0

約菜單什麼/項/ @叫什麼名字? – codymanix 2010-11-08 12:12:59

+0

好問題,+1。請參閱我的回答以獲得有關該問題的解釋和完整解決方案。 :) – 2010-11-08 13:59:30

+0

我認爲這不是一個XPath問題,但MS Databinding問題。從http://msdn.microsoft.com/en-us/library/aa479341.aspx:看起來您需要設置'asp:GridView'元素的'AutoGenerateColumns ='False''屬性,然後使用'Columns'和'asp:BoundField'孩子。 – 2010-11-08 14:16:21

回答

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查詢設置爲僅顯示 show name屬性/字段?

我想這些:

  1. 菜單/項@名
  2. 菜單/ @名稱
  3. // @名
  1. 語法無效:locat離子步驟必須以/字符開始並且在item@name之間沒有/字符。

  2. 在語法上是有效的,但被要求選擇所有menu元素,它們是當前節點的孩子的所有name屬性。不幸的是,menu沒有name屬性。

  3. 應該選擇節點,但考慮到上面的文本完全不是一個格式良好的XML文檔,這就解釋了否定的結果。此外,這將選擇整個文檔中的所有name屬性,並指出它們是哪一個元素 - 這不完全是您想要的,無論在這種類型的格式良好的文檔上這可能會選擇您想要的節點。

解決方案

第一步:更正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> 

第二步:請使用以下XPath表達式之一(還有更會選擇想要的節點):

/menu/item/@name 

/*/item/@name 

/*/*/@name 

//@name 
+0

關於xml:off當然,由於我從頭開始編寫它,所以它不是很好的形式,它實際上是在我的項目中(xml更復雜,我只提到它的簡化版本)。無論如何,我會嘗試這些查詢,我會讓你知道;) – balanza 2010-11-10 09:49:21