java - SAXParser '&' 串联问题

标签 java xml sax

我目前正在将 SAXParser 与 SAXParserFactory 一起使用,我遇到了字符串在“&”符号处被截断的问题。例如:“Nation Created Our World & everything in it”变成“Everything in it”。

显然,我不希望这种情况发生。在 xml 输入中,字符被正确转义为 &。我该如何解决这个问题?

try{
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();

            /* Get the XMLReader of the SAXParser we created. */
            XMLReader r = sp.getXMLReader();

            //This handles the xml and populates the entries array
            XMLHandler handler = new XMLHandler();


            // register event handlers
            r.setContentHandler(handler);
            String url = "http://foobar.xml";
            r.parse(url);

            return handler.getEntries();
}

我的 DefaultHandler 类中有这个

....
    public void characters( char ch[], int start, int length ){
           String value = new String( ch , start , length );

           if(!value.trim().equals("")) {

               if( currentElement.equalsIgnoreCase("TITLE") ) {
                   tempEntry.setTitle(value);
               }
....

最佳答案

SAX API 不保证任何给定的文本节点将以一个片段的形式传送。允许将其分解为对 characters() 方法的多次调用。您的应用程序必须尽可能地适应这一点,并自行重新组装各个部分。

顺便说一句,Nation Created Our World & everything in it 不是有效的 XML 文本片段,它必须是 Nation Created Our World &里面的一切。在这种情况下,SAX 解析器可能会将其分解为 Nation Created Our World&everything in it,而您的应用仅记住最后一个。

关于java - SAXParser '&' 串联问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354811/

相关文章:

java - 如何使用 mongodb-java-driver 进行 upsert

java - 一个对象是否可以说是线程安全的?

c# - Full Framework 和 .NET Core 的 xml 架构编译的不同行为

java - 在 java 中解析时出现 'illegal XML character' 问题

python - 如何使 xml.sax 对其 DTD 请求使用 HTTP 代理?

Java避免泛型类中的空指针异常

java - 无法在java中将客户端连接到服务器

java - 如何在没有 XML 文件的情况下使屏幕可滚动?

javascript - 如何使用 XPath 访问 FireFox 中的 xml 属性?

python sax解析器跳过异常