Java replaceAll不处理转义字符XML

Java replaceAll不处理转义字符XML,java,json,xml,parsing,Java,Json,Xml,Parsing,​ 我正在尝试使用Java将XML解析为JSONJSON.parse在这个字符上抛出这个错误:和#xD JSON.parse: bad control character in string literal 我试图在将这些字符发送到JSON.parse之前替换它们,但这行代码不起作用。是否有更好的方法完全替换/删除这些字符 String trim = desc.replaceAll("
", "\\n"); 要分析的XML Lorem ipsum dolor sit amet

​ 我正在尝试使用
Java
XML
解析为
JSON
JSON.parse
在这个字符上抛出这个错误:
和#xD

JSON.parse: bad control character in string literal
我试图在将这些字符发送到JSON.parse之前替换它们,但这行代码不起作用。是否有更好的方法完全替换/删除这些字符

String trim = desc.replaceAll("
", "\\n");
要分析的XML

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod 
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim 
    veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
    commodo consequat. Duis aute irure dolor in reprehenderit in voluptate 
    velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint 
    occaecat cupidatat non proident, sunt in culpa qui officia deserunt 
    mollit anim id est laborum.

当您显示的示例包含完整的XML输入时,您不是在解析XML

假设这是一个片段。您的解决方案只会转义一件事,但要获得有效的JSON,您应该转义JSON中不允许的或会导致不必要行为的所有字符。因此,寻找一些可以适当地为您转义JSON的东西是一个好主意,比如:

找到了答案:

  public static String cleanDescription(String desc){

        String trim = desc.replaceAll("<.*?>", ""); //removes html elements
        //there's a phantom question mark that sometimes gets added to the the front and end of the string
        if(!Character.isLetter(trim.charAt(0))) trim = trim.substring(1, trim.length());

        Integer charCount = 0;
        for(int j = 1; j <= 3; j++){
            if(!Character.isLetter(trim.charAt(trim.length() - j)) &&
                    !Character.isDigit(trim.charAt(trim.length() - j))) charCount++;
        }
        if(charCount >= 2) trim = trim.substring(0, trim.length() - (charCount - 1));


        Pattern pt = Pattern.compile("[^a-zA-Z0-9()\\.\\,]");
        Matcher match= pt.matcher(trim);
        while(match.find())
        {
            String s = match.group();
            trim = trim.replaceAll("\\" + s, " ");
        }

        return trim.trim();
    }
公共静态字符串描述(字符串描述){
String trim=desc.replaceAll(“,”);//删除html元素
//有一个虚幻的问号,有时会添加到字符串的前面和结尾
如果(!Character.isleter(trim.charAt(0)),trim=trim.substring(1,trim.length());
整数字符数=0;
对于(intj=1;j=2)trim=trim.substring(0,trim.length()-(charCount-1));
Pattern pt=Pattern.compile(“[^a-zA-Z0-9()\.\,]”);
匹配器匹配=点匹配器(微调);
while(match.find())
{
字符串s=match.group();
trim=trim.replaceAll(“\\”+s,”);
}
返回trim.trim();
}

Java或JavaScript?显然是Java。中没有
字符串修剪=
javascript@PhixXML>Java>JavaScript&#是用于预测十六进制字符的html代码,但xD中的x不是有效的十六进制数字!“要解析的xml”不是xml,而是包含一些xml实体的文本。你真正想做什么 是表示回车的实体。