我在python中做了很多简单的XML处理,并且变得喜欢ElementTree做事方式。
在Java中是否有类似且易于使用的东西?我发现DOM模型有点麻烦,并且发现自己编写的代码比我想做的简单事情要多得多。
或者我问错了什么?
也许我的问题是:有没有比“XMLUtils”类更好的选项,我看到人们在某些地方实现了在处理DOM时简化代码?
在这里添加一点点关于为什么我喜欢ElementTree,因为问题被问到了。
我正在尝试用一个简单的代码示例来说明,但是很难给出一个很好的例子。 这是一次尝试。这只是添加一个带有值和属性的标记到现有的xml字符串。
from xml.etree.ElementTree import *
xml_string = '<top><sub a="x"></sub></top>'
parsed = fromstring(xmlstring)
se = SubElement(parsed, "tag")
se.text = "value"
se.attrib["a"] = "x"
new_xml_string = tostring(parsed)
之后,new_xml_string是
<top><sub a="x" /><tag a="x">value</tag></top>
不是一个真正涵盖所有内容的例子,但仍然如此。当你想要做东西时,还有相当简单的循环标签,可以轻松测试标签和属性以及其他东西的存在。
答案 0 :(得分:6)
老实说,Java中的所有XML API都很糟糕,你可以改变你自己的suckage水平,这可能会变得可怕/缓慢到可管理/体面到甚至令人惊讶的确定。
这主要源于Java API尽可能符合W3C DOM的事实,事实上Xerces( Java当前的原生XML解决方案)引以自豪正如您从头版中看到的那样,它符合一大堆与XML相关的W3C规范。
但是,实际的Xerces API使用起来非常不愉快,并且因为多年来已经出现了多个其他Java XML库。目前最受欢迎的是
最后但绝对不是最不重要的我只需提及StAX只是因为它不同,它实际上是事件驱动的XML流式API。出于好奇,绝对值得一看。
PS。我目前正在编写自己的XML解析器/导航器作为练习,但尚未确定它将具有哪种API。我的目标是易用性,到目前为止在Java XML API中似乎很少见,但我不完全确定我将提供什么样的API。 Python的ElementTree看起来很有趣,但由于我对它并不完全熟悉,你是否愿意简要总结一下你觉得它的确切内容?
答案 1 :(得分:1)
您可以查看以下备选方案:
因为我从未使用过ElementTree,所以我不知道哪一个是最接近的。 如果你可以在项目中使用Groovy,它提供了一组在处理XML时有很多帮助的类。
答案 2 :(得分:1)
我们发现XOM(http://www.xom.nu)提供了简单的可子类化元素功能。
答案 3 :(得分:0)
在可用性方面,Java XML API确实不是最好的。我首选的选项是XOM,JDOM,然后是内置JAXP的顺序。语言(Begin Product Tab Sub Links Integrating XML into the Java Programming Language)中的原生XML作为一种新的数据类型存在一些隆隆声,但似乎已停滞不前。