Использование Xpath для получения текстового содержимого элемента - PullRequest
2 голосов
/ 15 февраля 2011

Здравствуйте, я пытаюсь прочитать мой документ XML с помощью xpath. Я занимаюсь этим уже несколько недель и просто изучаю XML и VB, но мне кажется, что я попал в тупик. Я попытался сделать несколько разных попыток сделать это, и у меня нет проблем с отображением файла XML на веб-странице с помощью класса xpathnavigator. Но затем мне нужно было отформатировать в html-таблицу, поэтому я выбрал другой маршрут и просто добавил xmldatasource с formview. Так вот мой код для этого

<oriondata station='GiftShop'>
<meas name="GiftShopTime">2011/02/08 16:39:01</meas>
<meas name="GiftShopItemNumber">6</meas>
<meas name="GiftShopDuration">200</meas>
</oriondata>

Значения, которые я хотел бы получить, - это дата «2011/02/08 16:39:01» в этом примере и число «6», а также продолжительность, равная «200»

Не уверен, что я делаю неправильно, если я использую

<asp:Label ID="lblID" Runat="server" Text='<%# XPath("//oriondata/meas/@name") %>' /></b><br/>

Это дает мне "GiftShopTime", но не фактическое время. Также, если я просто использую это

<asp:Label ID="lblID" Runat="server" Text='<%# XPath(".") %>' />
</b><br/>

Это дает мне текущий узел из того, что я читаю, но текущий узел, когда я делаю это, оказывается фактическим временем

Я просто не нашел способ указать каждое из тех имен, которые, по моему мнению, должны работать

Xpath("/oriondata/meas/name/@GiftShopTime") 

но это ничего не показывает.

Ответы [ 3 ]

4 голосов
/ 15 февраля 2011

Ваш xpath должен быть изменен на

Xpath("/oriondata/meas[@name='GiftShopTime']") 

Синтаксис этого конкретного xpath означает "дать мне значение элемента measure , который является потомком oriondata и чей атрибут name имеет значение 'GiftShopTime'".

1 голос
/ 16 февраля 2011

Итак, вот мой код для этого

    <oriondata station='GiftShop'>
      <meas name="GiftShopTime">2011/02/08 16:39:01</meas>
      <meas name="GiftShopItemNumber">6</meas>
      <meas name="GiftShopDuration">200</meas>
    </oriondata>

Значения, которые я хотел бы получить, это дата "2011/02/08 16:39:01"в этом примере и число «6», а также продолжительность, которая составляет «200»

Используйте (соответственно):

/*/meas[@name='GiftShopTime']
/*/meas[@name='GiftShopItemNumber']
/*/meas[@name='GiftShopDuration']
0 голосов
/ 16 февраля 2011

Попробуйте выполнить следующее: // oriondata / measure [@ name = 'GiftShopTime'] / textContents

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...