solr处理xml出错该怎么办?
damoqingquan
2008-12-16
solr处理数据的方式是将数据包装成xml格式交给solr进行处理,solr1.2采用xpp3来进 行xml的解析,而solr1.3改用java 1.6自带的xml处理类来处理,这会带来一些问题。
很多时候,我们并不能立即学会solr中的xml处理类,更不能用它来生成自己的xml数据,我之前就是用dom4j来生成了xml文档。 我发现我之前用于发给1.2处理的数据在1.3中居然有无法通过处理的数据。可见,两中办法的处理能力是不同的。琢磨了很久,最好只好对组装成xml的内容对非xml字符进行过滤。 public class XmlCharFilter { public static String doFilter(String in) { StringBuffer out = new StringBuffer(); // Used to hold the output. char current; // Used to reference the current character. if (in == null || ("".equals(in))) return ""; // vacancy test. for (int i = 0; i < in.length(); i++) { current = in.charAt(i); // NOTE: No IndexOutOfBoundsException caught // here; it should not happen. if ((current == 0x9) || (current == 0xA) || (current == 0xD) || ((current >= 0x20) && (current <= 0xD7FF)) || ((current >= 0xE000) && (current <= 0xFFFD)) || ((current >= 0x10000) && (current <= 0x10FFFF))) out.append(current); } return out.toString(); } } 不知道大家有没有试过,你在solr提供的xml中的内容部分加上如><"'等字符也是不能正确处理的,这是因为这些符号在xml文件中具有特殊的意义。我们也可以将其过滤或替换。 |