Учитывая XML:Как отличить атрибутов и узлов элементов вернулся из Saxon XPathSelector
<root name="value">
<level1>
<level2>Text</level2>
</level1>
</root>
Я хочу XPath /root/@name
вернуть value
, и XPath /root/level1
вернуть XML сериализации <level1>
узла:
<level1>
<level2>Text</level2>
</level1>
Я использую интерфейс a9api от Saxon 9.6 в Java.
Я обнаружил, что могу позвонить XdmValue.toString()
, чтобы получить сериализацию XML результата оценки XPath, которая получает желаемый результат для выбора элемента, но возвращает name="value"
при выборе атрибута. И я могу позвонить XdmItem.getStringValue()
, чтобы получить string value, что дает мне правильное значение для атрибута, но возвращает текстовое содержимое элемента.
Michael Kay ранее said "Saxon's s9api interface ... returns XdmValue objects whose type you can interrogate". Я могу видеть, что я могу выполнить проверку instanceof
, чтобы определить, является ли она XdmAtomicValue
, XdmExternalObject
, XdmFunctionItem
или XdmNode
, но элементы и атрибуты являются экземплярами XdmNode
. Как я различаю эти два?
(я не могу изменить XPaths, так как они предоставляются пользователем.)