我目前正在将 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/