В чем разница между OMNode и OMElement в аксиоме
Каковы различия и их использования между OMNode и OMElement в аксиому ? Я реализовал синтаксический анализатор XML и использовал оба объекта в реализации. Является ли Омелемент подклассом Омнода ?
В качестве примера оба ведут себя одинаково: посмотрите на это
//OMElement
OMElement omElement = nodeElement;
String attributeValue = ((OMElementImpl) omElement).getText();
//OMNode
OMNode omNode = nodeElement;
String attributeValue = ((OMElementImpl) omNode).getText();
Оба поддерживают литье и таким же образом
1 ответ:
Прежде всего, ваш код ссылается на
OMElementImpl
. Тебе не следует этого делать. Как указывает имя класса (а также имя пакета, содержащего этот класс), это класс реализации, который не должен использоваться непосредственно в коде приложения. В любом случае приведение кOMElementImpl
бесполезно, поскольку методgetText
определяется интерфейсомOMElement
.Чтобы ответить на вопрос, да,
OMElement
расширяетOMNode
, Как вы можете видеть в Javadoc:Http://ws.apache.org/axiom/apidocs/org/apache/axiom/om/OMElement.html
Как следует из названия,
OMElement
представляет собой XML-элемент.OMNode
с другой стороны, реализуется всеми классами аксиом, которые представляют информационный элемент XML, который может быть дочерним элементом другого информационного элемента (например, комментарий, текстовый узел, инструкция обработки и т. д.).