2011-05-24 65 views
0

大家好,我从这样的其他问题阅读一些答案,并没有得到一个很好的答案...什么是读取和写入xml字符串的简单和最简单的java API?

所以我想知道一些很好的API读取和写入XML字符串。读书,我正在考虑使用SAX我已经开始写xmlhandler用状态机来处理,但处理程序开始对方法成为大...

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

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

编写XML字符串我不知道还...

感谢您的时间

+3

你想用XML做什么?如果您试图将XML转换为Java对象(和/或反之亦然),则可以只使用[JAXB](http://en.wikipedia.org/wiki/JAXB),而不用担心解析XML。 – 2011-05-24 14:03:39

+0

用于编写XML请参阅此处:http://stackoverflow.com/questions/4898590/generating-xml-using-sax-and-java/4898623#4898623 – morja 2011-05-24 14:04:42

+0

如果树能显示你的无限其他吗? – 2011-05-24 14:04:50

回答

3

答案取决于你想用你的XML做什么。如果您想创建Java对象,请使用JAXB,正如Matt Ball所建议的那样。

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

你可以去周围的:

  • 将每个分支一个类的内部(或方法),并使用类装载器(或反射)来构建它的一个实例(或调用此方法);
  • 如果你有一组有限的元素,你必须回应,有一个HashMap<String, Method>并在解析之前填充它,然后简单地调用散列给你的方法;这意味着使用反射。

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

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

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

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

相关问题