大家好我从其他问题中读到了一些答案,并没有得到一个好的答案......
所以我想知道读取和编写xml字符串的一些好的api。为了阅读我正在考虑使用SAX我已经开始用状态机编写一个xmlhandler来处理它,但处理程序开始变大... 方法
public void startElement(String uri, String name, String n, Attributes at)
我有一个无限的其他如果树,这是正常的吗?
写xml字符串我还不知道......
感谢您的时间
答案 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文档。它有很大的帮助;)