什么是读取和编写xml字符串的简单且最简单的Java API?

时间:2011-05-24 14:01:39

标签: java xml xml-parsing saxparser

大家好我从其他问题中读到了一些答案,并没有得到一个好的答案......

所以我想知道读取和编写xml字符串的一些好的api。为了阅读我正在考虑使用SAX我已经开始用状态机编写一个xmlhandler来处理它,但处理程序开始变大... 方法

 public void startElement(String uri, String name, String n, Attributes at)

我有一个无限的其他如果树,这是正常的吗?

写xml字符串我还不知道......

感谢您的时间

1 个答案:

答案 0 :(得分:3)

答案取决于您对XML的处理方式。如果你想创建Java对象,请使用JAXB,正如Matt Ball建议的那样。

如果你想做一些事情(即执行一些代码),取决于XML元素的名称(或属性的内容,或其他),那么很可能你会得到无穷无尽的if-else。为什么?因为您根据XML中的内容分支代码。

你可以通过以下方式绕过它:

  • 将每个分支放在一个类(或方法)中,并使用类加载器(或反射)构造它的实例(或调用此方法);
  • 如果有一组有限的元素,你必须响应,拥有HashMap<String, Method>并在解析前填充它,然后只需调用哈希给你的方法;这意味着使用反射。

这两种解决方案都会对速度产生负面影响,但是(在我看来)极大地提高了代码的可读性,可重用性和理解力。

您可以考虑使用DOM而不是SAX。缺点:将整个XML加载到内存中;优点:您可以很好地浏览元素树,并始终拥有任何元素的上下文。

至于编写XML:非常简单的XML文档,你可以只写,它们与常规文本文件没有区别(打开流,写入它,关闭它)。但是,通常最好在DOM树上操作然后保存它;有很多关于它的教程。

如果您的软件经常被使用,并且您经常依赖XML文档的结构,并且希望避免因错放元素导致的严重崩溃,请务必使用Schema(XSD)或DTD for它并验证您加载的每个XML文档。它有很大的帮助;)