Как сопоставить все атрибуты с учетом известного uri пространства имен? - PullRequest
0 голосов
/ 21 июня 2020

С помощью VTD- XML я хочу найти все атрибуты, принадлежащие пространству имен, зная только его uri.

Вот мой код:

VTDGen vg = new VTDGen();
vg.setDoc("<root xmlns=\"urn:foo\" xmlns:nsBar=\"urn:nsBar\" nsBar:Baz=\"value\"/>".getBytes());
vg.parse(true);

VTDNav n = vg.getNav();
    
AutoPilot autoPilot = new AutoPilot(n);
autoPilot.selectXPath("//@*[namespace-uri()='urn:nsBar']");
//autoPilot.selectXPath("//@*[namespace-uri()='urn:foo']");
    
int r;
while( (r= autoPilot.evalXPath()) != -1) {
     System.out.println("°°° " + n.toString(r));
}

Ниже код ничего не выводит. Если вы раскомментируете прокомментированную строку и прокомментируете предыдущую, вы получите следующее:

°°° nsBar:Baz

Однако nsBar:Baz принадлежит пространству имен nsBar. URI этого пространства имен - urn:nsBar. Что не так с vtd- xml здесь?

...