相关疑难解决方法(0)

在Java中解析包含HTML实体的XML文件而不更改XML

我必须解析Java中的一堆XML文件,有时 - 并且无效地 - 包含HTML实体,例如—,>等等.我理解处理这个问题的正确方法是在解析之前向XML文件添加合适的实体声明.但是,我无法做到这一点,因为我无法控制这些XML文件.

是否存在我可以覆盖的某种回调,只要Java XML解析器遇到这样的实体就会调用它?我无法在API中找到一个.

我想用:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder parser = dbf.newDocumentBuilder();
Document        doc    = parser.parse( stream );
Run Code Online (Sandbox Code Playgroud)

我发现我可以重写resolveEntityorg.xml.sax.helpers.DefaultHandler,但我要如何使用这与更高级别的API?

这是一个完整的例子:

public class Main {
    public static void main( String [] args ) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder parser = dbf.newDocumentBuilder();
        Document        doc    = parser.parse( new FileInputStream( "test.xml" ));
    }
Run Code Online (Sandbox Code Playgroud)

}

使用test.xml:

<?xml version="1.0" encoding="UTF-8"?>
<foo>
    <bar>Some&nbsp;text &mdash; invalid!</bar>
</foo>
Run Code Online (Sandbox Code Playgroud)

生产:

[Fatal Error] :3:20: The entity …
Run Code Online (Sandbox Code Playgroud)

java xml xml-parsing

18
推荐指数
2
解决办法
8395
查看次数

标签 统计

java ×1

xml ×1

xml-parsing ×1