我将会得到一个特定格式的XML文档。这个文档的类型是固定的,所以非常严格。
我需要解析它,以便将其转换为JSON(稍加修改以便他人可以在DOJO中使用)。
我的问题是,我应该使用非常快速轻量级(无需SAX等)的XML解析器(有任何想法吗?),还是编写自己的解析器,基本上将其转换为StringBuffer并遍历数组?基本上,在底层,我认为所有HTML解析器都会通过字符串(或内存缓冲区)旋转并解析,同时生成输出。
谢谢
编辑
XML将在3/4行到最多50行之间。
我将会得到一个特定格式的XML文档。这个文档的类型是固定的,所以非常严格。
我需要解析它,以便将其转换为JSON(稍加修改以便他人可以在DOJO中使用)。
我的问题是,我应该使用非常快速轻量级(无需SAX等)的XML解析器(有任何想法吗?),还是编写自己的解析器,基本上将其转换为StringBuffer并遍历数组?基本上,在底层,我认为所有HTML解析器都会通过字符串(或内存缓冲区)旋转并解析,同时生成输出。
谢谢
编辑
XML将在3/4行到最多50行之间。
Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new FileInputStream("file.xml"));
请注意,如果您需要解析多个文件,则保留对文档构建器的引用将加快速度。
然后您可以使用来自 org.w3c.dom.Document 的函数读取或操作内容。例如,getElementsByTagName() 返回具有特定标签名称的所有元素。
http://geekexplains.blogspot.com/2009/04/sax-vs-dom-differences-between-dom-and.html
即使您不使用SAX/DOM,仍然有简单的选项可供您使用,请看看Simple :)http://simple.sourceforge.net/
您可能还想考虑STaX。
你真的需要解析/操作XML文档中的任何数据吗?如果不需要,你可以使用XSLT。非常简单,非常快速。
使用真正的XML解析器。如果不这样做,当某些东西发生变化时,你很可能会遇到问题。文档可能非常严格,但两年后,某些东西可能会被重构并改变结构,以便使用XML解析器解析到相同的数据结构,并打破自制字符串解析器。
在后端进行解析并公开JSON可能是正确的方法,这样您就可以拥有通用的JSON数据,可以轻松地与其他来源集成。但是,如果您有一个简单的消息,并且这是您认为您将使用JSON的唯一位置,则可以尝试在客户端进行解析。Dojo具有实验性客户端XML解析器。
你必须使用XML吗?
我发现自己的自定义文本格式比任何现成的XML或JSON包都要快得多 - 它们很快,但通过控制自己的格式并仅进行字符串解析,我能够将时间减半,比最快的XML实现还要快。
显然,只有在完全掌控格式的情况下才适用,可能不适合您的情况,但对于其他处于这种情况的人来说:不要认为XML是您拥有的绝对最快选项。它不是。