答案取决于你想用你的XML做什么。如果您想创建Java对象,请使用JAXB,正如Matt Ball所建议的那样。
如果您想根据XML元素的名称(或其属性的内容或其他)来做一些事情(即执行一些代码),那么最有可能的是最终会有无穷无尽的if-else
。为什么?因为你正在分支你的代码,这取决于你在XML中拥有什么。
你可以去周围的:
- 将每个分支一个类的内部(或方法),并使用类装载器(或反射)来构建它的一个实例(或调用此方法);
- 如果你有一组有限的元素,你必须回应,有一个
HashMap<String, Method>
并在解析之前填充它,然后简单地调用散列给你的方法;这意味着使用反射。
这两种解决方案都会对速度产生负面影响,但极大地(在我看来)增加了代码的可读性,可重用性和理解性。
您可能会考虑使用DOM而不是SAX。缺点:将整个XML加载到内存中;优点:您可以很好地浏览元素树,并始终具有任何元素的上下文。
至于写XML:非常简单的XML文档你可以只写,它们与常规文本文件(打开流,写入,关闭它)没有区别。但是,在DOM树上操作并保存它通常会更好;有很多关于它的教程。
如果您的软件经常被使用,并且您依赖于XML文档的结构很多,并且希望避免由错误放置的元素导致讨厌的崩溃,请务必使用Schema(XSD)或DTD为它并验证您加载的每个XML文档。它有很大的帮助;)
你想用XML做什么?如果您试图将XML转换为Java对象(和/或反之亦然),则可以只使用[JAXB](http://en.wikipedia.org/wiki/JAXB),而不用担心解析XML。 – 2011-05-24 14:03:39
用于编写XML请参阅此处:http://stackoverflow.com/questions/4898590/generating-xml-using-sax-and-java/4898623#4898623 – morja 2011-05-24 14:04:42
如果树能显示你的无限其他吗? – 2011-05-24 14:04:50