我正在寻找像dom4j这样的东西,但没有dom4j的瑕疵,例如文档不好或丢失,看似停滞的开发状态.
背景:我一直在使用和 提倡 dom4j,但是我觉得它并不完全正确,因为我知道这个库远非最佳(例如:看看XSLT相关样式表类中的方法是如何记录的;你会传递什么来运行( )作为String mode参数?)
要求:与使用 纯JDK(javax.xml和org.w3c.dom包)时相比,库应该使基本的XML处理更容易.这样的事情:
我真的很喜欢dom4j所承诺的,实际上:" 易于使用的开源库,用于处理XML,XPath和XSLT [...],完全支持DOM,SAX和JAXP. "即将推出的dom4j 2.0确实声称能解决所有问题:充分利用Java 5并添加缺少的文档.但不幸的是,如果你仔细观察:
警告:dom4j 2.0处于pre-alpha阶段.它很可能无法编译.如果它可以随机编译,很可能无法运行.如果它偶尔运行,它可能会突然爆炸.如果要使用dom4j,则需要1.6.1版.真.
......并且网站已经说了很长时间了.那么有没有一个很好的替代dom4j?请为您的首选库提供一些理由,而不是仅仅转储名称和链接.:-)
目前,我们的Java应用程序使用制表符分隔的*.cfg文件中保存的值.我们需要更改此应用程序,以便它现在使用XML文件.
为了从这个文件中读取值,最好/最简单的库是什么?
是否有简单的方法在Java中读写Xml?
我之前使用过SAX解析器,但我记得它不直观,我看了几个JAXB的教程,看起来很复杂.
我不知道我是否被C#的XmlDocument类所破坏,但我想要做的就是创建一个Xml文档,它代表一组类及其成员(有些是属性,有些是元素).
我会研究序列化,但XML必须具有与ac#app输出相同的格式,我将其逆向工程化为Java.
假设我想使用XOM将大量搜索结果(如XML)输出到PrintWriter或OutputStream中.生成的XML看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<resultset>
<result>
[child elements and data]
</result>
...
...
[1000s of result elements more]
</resultset>
Run Code Online (Sandbox Code Playgroud)
因为生成的XML文档可能很大(可能是几百兆字节),我想以流式方式输出它(而不是在内存中创建整个Document然后编写它).
<result>一次输出一个的粒度很好,所以我想一个<result>接一个地生成,并将其写入流中.换句话说,我只想做一些像这样的伪代码(启用自动刷新,所以不用担心):
open stream/writer
write declaration
write start tag for <resultset>
while more results:
write next <result> element
write end tag for <resultset>
close stream/writer
Run Code Online (Sandbox Code Playgroud)
我一直在寻找Serializer,但必要的方法,writeStartTag(Element),writeEndTag(Element),write(DocType)受到保护,不公开!除了将Serializer子类化为能够使用这些方法,或者将开始和结束标记作为字符串直接手动写入流中,完全绕过XOM之外,没有其他方法吗?(后者在这个简单的例子中不会太糟糕,但在一般情况下会变得非常难看.)
我错过了什么或者XOM是不是为此而做的?
随着dom4j的我能做到这一点很容易使用XMLWriter-它有需要构造Writer或者OutputStream和方法writeOpen(Element),writeClose(Element),writeDocType(DocumentType)等比较,以XOM的Serializer,唯一的公共write方法是一个取整Document. …