有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java SAXParser“&”连接问题

我目前正在将SAXParser与SAXParserFactory一起使用,并且遇到了在“&;处截断字符串的问题符号。例如:“国家创造了我们的世界,世界上的一切”变成了“世界上的一切”

显然,我不希望这种情况发生。在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);
               }
....

共 (2) 个答案

  1. # 1 楼答案

    谢谢你,斯卡夫曼

    实施,

    public void startElement(String s, String s1, String elementName, Attributes attributes) throws SAXException {
        // clear tmpValue on start of element
        tmpValue = "";
    }
    
    public void characters(char[] ac, int i, int j) throws SAXException {
        tmpValue += new String(ac, i, j);
    }
    
  2. # 2 楼答案

    SAXAPI不能保证任何给定的文本节点都能完整地交付。允许将其分解为对characters()方法的多个调用。您的应用程序必须尽可能地适应这种情况,并自行重新组装这些部件

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