【问题标题】:Reading and writing XML using JUST Java 1.5 (or earlier)使用 JUST Java 1.5(或更早版本)读取和写入 XML
【发布时间】:2009-03-28 16:52:41
【问题描述】:

对于读取 XML,Java 1.5 中内置了 SAX 和 DOM。您可以使用 JAXP,而无需了解可用解析器的详细信息……那么,在 Java 1.5 及更早版本中编写 XML 文档有哪些规定的 API?

  • 我不想使用第三方二进制文件
  • 我不想假设 Sun VM 或 IBM VM 等并使用一些专门的类
  • 无论编写文档是什么意思,我都想以补充的方式阅读。
  • 大型 XML 文件的性能和适用性并不是特别重要

理想情况下,无需更改的读写操作只需几行代码。

【问题讨论】:

  • 您是否需要控制 xml 架构,或者只要它是 XML 并且可以通过相同的过程反向读取,就可以编写任何内容?
  • 是的,我关心架构。你在考虑 XML 序列化吗?

标签: java xml


【解决方案1】:

Java 1.4 自带javax.xml.transform,可以带DOMSourceSAXSource等:

// print document
InputSource inputSource = new InputSource(stream);
Source saxSource = new SAXSource(inputSource);
Result result = new StreamResult(System.out);
TransformerFactory transformerFactory = TransformerFactory
    .newInstance();
Transformer transformer = transformerFactory
    .newTransformer();
transformer.transform(saxSource, result);

如果您想回到 J2SE 1.3 API,您几乎只能靠自己(不过如果您使用那个时代的 J2EE API,可能会有一些问题 - 我不记得了)。

【讨论】:

  • 这正是我输入的问题的正确答案。但事后看来,这个问题具有误导性。我想创造一堆新的内容;我不确定如何使用 Transformer 创建新内容...
  • 我将以输入数据的示例和您希望从中生成的输出开始一个新问题。
  • 另外,如何使用 Transformer:java.sun.com/webservices/reference/tutorials/jaxp/html/… 不过,尚不清楚您是否需要所有这些。
【解决方案2】:

没有官方的“规定”API,但我们对以下技术非常满意:

创建一个类XmlWriter,它以字符Writer 进行初始化,并具有startElement( String name )writeAttribute( String name, String value )writeCData( String text ) 等方法。

然后以显而易见的方式实施。内部方法可以做 SGML 字符转义之类的事情;有关有用的实用程序,请参阅 Apache Commons。

如果您希望输出更易于阅读,您可以执行跟踪元素嵌套级别以及添加换行符和制表符或空格等操作。同样可选的是跟踪诸如打开和关闭的元素之类的东西,其中没有任何内容,可以缩写为<element/>

【讨论】:

    猜你喜欢
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多