【问题标题】:ReplaceAll not working on XML inputReplaceAll 不适用于 XML 输入
【发布时间】:2014-11-06 10:46:30
【问题描述】:

我正在开发一个读取 XML 并生成输出 XML 的 java 程序。我在替换读入文件中的某些字符时遇到问题。

以下是我的方法:

 public void readTemplateXML() {

    BufferedReader br = null;
        try {
            br = new BufferedReader(new InputStreamReader(new FileInputStream(
                    path), "UTF8"));
        } catch (UnsupportedEncodingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    String line;
    StringBuilder sb = new StringBuilder();

    try {
        while ((line = br.readLine()) != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine();
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    xml = sb.toString();
    xml = xml.replaceAll("&lt;", "\\<"); //This is not working.
}

我只是将“xml”字符串输出到一个 xml 文件,我仍然得到“

&lt;addressLine1&gt;Main Street&lt;/addressLine1&gt;&#13;

无论如何我可以用 替换这些字符吗? 文件编码为UTF-8。

编辑: 替换所有后xml字符串是正确的。我在另一种方法 xml 节点中将其用作文本内容:

        // inner request element
        Element request = doc.createElement("con:request");
        request.appendChild(doc.createTextNode(xml));
        rootElement.appendChild(request);

此后内容不正确。

任何帮助将不胜感激。

【问题讨论】:

    标签: java string replace character-encoding


    【解决方案1】:

    简短回答:

    语法: 下面是这个方法的语法:

    public String replaceAll(String regex, String replacement)
    

    参数: 以下是参数的详细信息:

    regex -- 要匹配此字符串的正则表达式。

    replacement -- 将替换找到的表达式的字符串。

    代码:

           String xml="&lt;addressLine1&gt;Main Street&lt;/addressLine1&gt;&#13";    
           xml = xml.replaceAll("&lt;", "\\<"); 
           xml = xml.replaceAll("&gt;", "\\>"); 
           xml = xml.replaceAll("&#13", ""); 
           System.out.println( xml );
    

    结果:

    <addressLine1>Main Street</addressLine1>
    

    【讨论】:

    • 我也试过正则表达式。你能解释一下为什么xml = xml.replaceAll("&amp;lt;", "\\&lt;"); 无效吗?
    • 你有什么问题?
    • @L337BEAN 再次检查我的答案,让我知道您的问题是什么?
    • 我输入了你的答案,但我得到了相同的结果。我已经更详细地更新了我的问题
    • @L337BEAN 请为您的新请求定义新问题,并标记接受我的回答
    猜你喜欢
    • 2018-03-09
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 2011-12-23
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多