AXIOM中OMNode和OMElement有什么区别

时间:2013-08-28 09:51:13

标签: java axiom ixmldomelement

AXIOM中OMNode和OMElement之间有什么区别和用法?我已经实现了一个XML解析器,我在实现中使用了两个对象。 OMElement是OMNode的子类吗?

作为一个例子,两者的行为方式相同:看看这个

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

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

两者都支持铸造并以同样的方式

1 个答案:

答案 0 :(得分:2)

首先,您的代码引用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信息项可以是另一个信息项的子项(例如注释,文本节点,处理指令等)。