我正在尝试从伪 XML 格式的文件中解析文本。当它具有以下结构时,我可以从中获取 DOM 文档:
<product>
<product_id>234567</product_id>
<description>abc</description>
</product>
当结构类似于以下内容时,我遇到的问题就发生了:
<product>
<product_id>234567</product_id>
<description>abc</description>
<quantity 1:2>
<version>1.1</version>
</quantity 1:2>
<version>1.2</version>
<quantity 2:2>
</quantity 2:2>
</product>
由于 <quantity 1:2>
中的空格,它会生成以下异常:
org.xml.sax.SAXParseException:[Fatal Error] :1:167: Element type " quantity " must be followed by either attribute specifications, ">" or "/>"
我可以通过用下划线替换空格来解决这个问题。问题是结构的大小可能不同,并且包含多个具有相同格式 (<node 1:x>
) 的子节点,并且文件可能包含数百个要解析的结构。是否有一个类可以解析这样的文本并返回一个树状对象?
最佳答案
您的文件根本不是 XML,SAX 是用于 XML(XML 的简单 API)。您应该重新考虑您的结构,以便您可以执行以下操作:
<quantity myAttr="1.2">
<version>1.2</version>
</quantity>
<quantity myAttr="1.x">
<version>1.1</version>
</quantity>
<version>1.0</version>
或者类似的东西。
关于java - 在 Java 中解析伪 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5772123/