我目前正在使用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();
}
Run Code Online (Sandbox Code Playgroud)
我在我的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);
}
....
Run Code Online (Sandbox Code Playgroud)
ska*_*man 12
SAX API不保证任何给定的文本节点将以单件形式交付.允许将其分解为对该characters()
方法的多次调用.您的应用程序必须适应这种情况,并重新组装这些部件.
顺便说一句,Nation Created Our World & everything in it
它不是一个有效的XML文本片段,它必须是Nation Created Our World & everything in it
.在这种情况下,SAX解析器可能会将其分解为Nation Created Our World
,&
而且everything in it
,您的应用程序只记住最后一个.