Правильный синтаксис XPath, когда XML дочерний элемент содержит пространство имен - PullRequest
0 голосов
/ 21 февраля 2020

Итак, у меня есть XML файл, содержащий информацию об измененных атрибутах следующим образом:

<xf:Data xmlns:xf="uri:com.data/Data">
 <xf:ElementId>XF42591459</xf:ElementId>
 <xf:ElementDescription>Part number 42591459</xf:ElementDescription>
 <xf:StockData>
  <xf:Available>YES</xf:Available>
  <xf:StockCount xmlns:diff="uri:com.data/diff" diff:oldcount="200">197</xf:StockCount>
 </xf:StockData>
</xf:Data>

Мне нужно узнать значение oldcount, но я озадачен, так как определение xmlns внутри дочерний элемент меня смущает.

Я пытался использовать XPath /xf:Data/xf:StockData/xf:StockCount/@diff:oldcount, но, похоже, он не работает. Если xmlns:diff="uri:com.data/diff" будет частью <xf:Data...>, то это будет работать нормально.

1 Ответ

2 голосов
/ 21 февраля 2020

Выражение /xf:Data/xf:StockData/xf:StockCount/@diff:oldcount будет работать, но только если вы сообщите своему процессору XPath, к каким пространствам имен относятся префиксы "xf" и "diff". То, как вы это делаете, варьируется от одного процессора XPath к другому. (Вам не нужно использовать те же префиксы, что и в исходном документе, подойдет любой префикс, сопоставленный с правильным URI) *

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