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); } .... 

SAX API不保证任何给定的文本节点将以单件forms交付。 允许将其分解为对characters()方法的多次调用。 您的应用程序必须适应这种情况,并重新组装这些部件。

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

谢谢skaffman

实施,

 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); }