GDataXML / Libxml2 XPath concat не работает - PullRequest
2 голосов
/ 26 ноября 2010

Я использую GDataXML (использует libxml2 в фоновом режиме) на iPhone для чтения списка имен из XML-файла.

<persons>
    <person id=1>
       <firstname>John<firstname>
       <lastname>Doe<lastname>
    </person>
</persons>

Но когда я пытаюсь конкатироватьимя и фамилия с

/persons/person/concat(firstname, ' ', lastname)

не работают с GDataXML.Когда вы пытаетесь сделать то же самое с примером из библиотеки .NET XML или тестировать его с помощью AquaPath, это работает.

Любые подсказки или другие альтернативы, чтобы заставить его работать?

1 Ответ

1 голос
/ 26 ноября 2010

Но когда я сначала пытаюсь примириться и фамилия с

/persons/person/concat(firstname, ' ', lastname) 

это не работает с GDataXML.

LibXML реализует только XPath 1.0 .

Вышеупомянутое выражение не является синтаксически правильным в XPath 1.0 (это правильное выражение XPath 2.0).

Когда пытаясь то же самое с примером с .NET XML libary или тестирование с AquaPath это работает.

Вы ошибаетесь в .NET XML (если вы не используете сторонний процессор XPath 2.0, такой как Saxon, Altova или XQSharp) - .NET не реализует XPath 2.0 .

Решение

Используйте следующее выражение XPath 1.0:

concat(/*/*/firstname, ' ', /*/*/lastname)
...