AXIOM中OMNode和OMElement有什么区别及其用法?我已经实现了XML解析器,并且在实现中使用了两个对象。 OMElement是OMNode的子类吗?
作为一个示例,两者的行为方式相同:看一下
//OMElement
OMElement omElement = nodeElement;
String attributeValue = ((OMElementImpl) omElement).getText();
//OMNode
OMNode omNode = nodeElement;
String attributeValue = ((OMElementImpl) omNode).getText();
都以相同方式支持投射
最佳答案
首先,您的代码引用了OMElementImpl
。你不应该那样做。正如类的名称(以及包含该类的包的名称)所示,这是一个实现类,不应直接在应用程序代码中使用。无论如何,强制转换为OMElementImpl
是没有用的,因为getText
方法是由OMElement
接口定义的。
要回答这个问题,是的,OMElement
扩展了OMNode
,如您在Javadoc中所看到的:
http://ws.apache.org/axiom/apidocs/org/apache/axiom/om/OMElement.html
顾名思义,OMElement
表示XML元素。另一方面,OMNode
由表示XML信息项的所有Axiom类实现,这些XML信息项可以是另一个信息项的子项(例如注释,文本节点,处理指令等)。