XPath: Получите узлы, где дочерний узел содержит атрибут

По некоторым причинам существует две стандартных библиотеки в PHP обработка произвольной длины / числа точности: до н.э Математика и GMP. Я лично предпочитаю GMP, поскольку это более ново и имеет более богатый API.

На основе GMP я реализовал класс Decimal2 для того, чтобы сохранить и обработать суммы валюты (как 100,25 доллара США). Много из ультрасовременных вычислений там w/o любые проблемы. Протестированный с очень большие количества.

105
задан Pavel K 10 September 2013 в 15:34
поделиться

2 ответа

//book[title[@lang='it']]

фактически эквивалентен

 //book[title/@lang = 'it']

Я пробовал использовать vtd-xml, оба выражения дают одинаковый результат ... какой механизм обработки xpath вы использовали? Я думаю, это проблема соответствия Ниже приведен код

import com.ximpleware.*;
public class test1 {
  public static void main(String[] s) throws Exception{
      VTDGen vg = new VTDGen();
      if (vg.parseFile("c:/books.xml", true)){
          VTDNav vn = vg.getNav();
          AutoPilot ap = new AutoPilot(vn);
          ap.selectXPath("//book[title[@lang='it']]");
                  //ap.selectXPath("//book[title/@lang='it']");

          int i;
          while((i=ap.evalXPath())!=-1){
              System.out.println("index ==>"+i);
          }
          /*if (vn.endsWith(i, "< test")){
             System.out.println(" good ");  
          }else
              System.out.println(" bad ");*/

      }
  }
}
10
ответ дан 24 November 2019 в 03:58
поделиться

Попробуйте

//book[title/@lang = 'it']

Это гласит:

  • получить все элементы книги
    • , у которых есть хотя бы один заголовок
      • с атрибутом lang
        • со значением "it"

Вы можете найти это полезным - это статья Рональда Бурре под названием «XPath в пяти абзацах» .

Но, честно говоря, // book [title [@ lang = 'it']] и приведенное выше должно быть эквивалентным, если только ваш движок XPath не имеет "проблем". Таким образом, это может быть что-то в коде или образце XML, который вы нам не показываете - например, ваш образец представляет собой фрагмент XML. Может быть, у корневого элемента есть пространство имен, и вы не учитываете это в своем запросе? И вы только сказали нам, что это не сработало, но не сказали, какие результаты вы получили.

160
ответ дан 24 November 2019 в 03:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: