В чем разница между OMNode и OMElement в аксиоме


Каковы различия и их использования между OMNode и OMElement в аксиому ? Я реализовал синтаксический анализатор XML и использовал оба объекта в реализации. Является ли Омелемент подклассом Омнода ?

В качестве примера оба ведут себя одинаково: посмотрите на это

//OMElement
OMElement omElement = nodeElement;
String attributeValue = ((OMElementImpl) omElement).getText();

//OMNode
OMNode omNode = nodeElement;
String attributeValue = ((OMElementImpl) omNode).getText();

Оба поддерживают литье и таким же образом

1 2

1 ответ:

Прежде всего, ваш код ссылается на OMElementImpl. Тебе не следует этого делать. Как указывает имя класса (а также имя пакета, содержащего этот класс), это класс реализации, который не должен использоваться непосредственно в коде приложения. В любом случае приведение к OMElementImpl бесполезно, поскольку метод getText определяется интерфейсом OMElement.

Чтобы ответить на вопрос, да, OMElement расширяет OMNode, Как вы можете видеть в Javadoc:

Http://ws.apache.org/axiom/apidocs/org/apache/axiom/om/OMElement.html

Как следует из названия, OMElement представляет собой XML-элемент. OMNode с другой стороны, реализуется всеми классами аксиом, которые представляют информационный элемент XML, который может быть дочерним элементом другого информационного элемента (например, комментарий, текстовый узел, инструкция обработки и т. д.).