0

我正在尝试从原始字符串(这是一个 xml 文件)中删除搜索到的字符串。为此,我使用了 replaceAll 函数。但是我得到了空的换行符,因为我使用 "" 作为要替换的字符串。还有另一种方法可以删除字符串吗?

        start =str.indexOf("<opts>");
        end =str.indexOf("</opts>");
        String removeStr = str.substring(start -6, end + 7);
        str = str.replaceAll(removeStr, "");

试过:

    System.out.println("InitialString :="+str);
    int start = str.indexOf("<opts>");
    int end = str.lastIndexOf("</opts>"); //if \n is added, indent of tag<nos> changes
    str = str.substring(0, start ) + str.substring(end + 7, str.length());
    System.out.println("FinalString :="+str);

初始输入字符串:=

<data>
    <param>2</param>
    <unit>1</unit>
    <opts>
        <name>abc</name>
        <venue>arena0</venue>
    </opts>
    <opts>
        <name>xyz</name>
        <venue>arena1</venue>
    </opts>
    <nos>100</nos>
</data>

最终输出字符串:=

<data>
    <param>2</param>
    <unit>1</unit>

    <nos>100</nos>
</data>
4

2 回答 2

2

你可以这样做;

int start = str.indexOf("<opts>");
int end = str.indexOf("</opts>\n");
str = str.substring(0, start - 6) + str.substring(end + 8, str.length());
于 2012-07-31T12:30:36.197 回答
2

您没有在</opts>. 当您执行 an 时,end + 7您将其限制到结束,</opts>但之后可能有 a\n或 / 和\r

如果您不想将其作为 XML 内容使用(将其解析为 DOMDocument并删除应该删除的每个子项,removeChild并将其存储在一个将再次缩进您的 XML 的过程中),您可以进行后处理和字符串替换后清除空行。


为了使用 XML Document 方法,您可以尝试:

TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer        transformer  = transFactory.newTransformer();

// set some options on the transformer
transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

// get a transformer and supporting classes
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
DOMSource    source = new DOMSource(xmlDoc);

// transform the xml document into a string
transformer.transform(source, result);

System.out.println(writer.toString()); 

样本来自:http ://techxplorer.com/2010/05/20/indenting-xml-output-in-java/

于 2012-07-31T12:30:41.617 回答