2012-03-22 37 views
0

我想分析的是有像这些元素的XML文件:的SAXException用分号

<element>&amp</element> 
<element>&amp;</element> 

但SAX解析器解析过程中给了我以下异常:

org.xml.sax.SAXParseException: The reference to entity "amp" must end with the ';' delimiter. 
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:249) 
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284) 
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208) 

有任何已知的解决方法这个?

抛出异常Java代码是这样的:

DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file); 
+1

以什么方式是“逃脱的分号”?那是你的*实际* XML?一个简短但完整的程序演示这个问题,以及一个示例XML文件,真的有帮助。 – 2012-03-22 16:39:54

+0

对不起,我犯了一个错误。我现在纠正了我的帖子。 – adranale 2012-03-22 16:53:06

+1

在撰写问题时请多加小心。当你错误地输入你的问题时,将问题发送给追踪问题是令人讨厌的。 – skaffman 2012-03-22 17:44:10

回答

1

我无法与你所示的XML(你的编辑前)重现此。简短但完整的程序:

import java.io.*; 
import javax.xml.parsers.DocumentBuilderFactory; 

public class Test { 
    public static void main(String[] args) throws Exception { 
     File file = new File("test.xml"); 
     DocumentBuilderFactory.newInstance() 
      .newDocumentBuilder() 
       .parse(file); 
    } 
} 

随着文件:

<element>&amp;</element> 

...它没有错误运行。

当文件就是:

<element>&amp</element> 

...它表明你报道了同样的异常。

我的结论是,它是正确的,而你的文件坏了。在文件中查找每个出现&amp的地方,并找到缺少分号的地方。

+0

你是对的。我的文件包含'&amp;' – adranale 2012-03-22 17:10:15

+2

@adranale:然后它是无效的XML。修理它。下一次,请相信解析器告诉你的是什么:) – 2012-03-22 17:11:29