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文件中具有特殊的意义。我们也可以将其过滤或替换。
Global site tag (gtag.js) - Google Analytics