Cha*_*ere 11
不,你不应该为此编写自己的XML解析器.
SAX本身非常轻巧和快速,所以我不确定为什么认为它太多了.使用字符串缓冲区实际上比使用SAX的可伸缩性要小得多,因为SAX不要求您将整个XML文件加载到内存中以使用它.我已经使用SAX来解析多GB的XML文件,在32位计算机上使用字符串缓冲区是不可能的.
如果您有小文件并且不需要担心性能,请考虑使用DOM.Java的实现可能有点烦人(使用DocumentBuilder创建文档,DocumentBuilder来自DocumentBuilderFactory)
从文件创建文档的代码如下所示:
Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new FileInputStream("file.xml"));
Run Code Online (Sandbox Code Playgroud)
(请注意,如果需要解析多个文件,保留对文档构建器的引用会加快速度)
然后使用org.w3c.dom.Document中的函数来读取或操作内容.例如,getElementsByTagName()返回具有特定标记名称的所有元素.
这实际上取决于您要解析的XML类型.当有东西可以为你完成工作时,我不会编写你自己的解析器.
SAX/DOM的选择实际上是基于您要解析的内容,请参阅此内容以了解如何使用它:
http://geekexplains.blogspot.com/2009/04/sax-vs-dom-differences-between-dom-and.html
即使您不使用SAX/DOM,仍然可以使用简单的选项,看看简单:)
http://simple.sourceforge.net/
您可能还想考虑STaX.