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>。あなたが実行するとき、end + 7あなたはそれを最後まで制限していますが、それの後にまたは/と</opts>があるかもしれません。\n\r

XMLコンテンツとして使用したくない場合(DOMとして解析し、Document削除する必要のある各子を削除してremoveChild、XMLを再度インデントするプロセスで保存する)、後処理を行って、文字列を置き換えた後、空の行をクリアします。


XMLドキュメントのアプローチでそれを行うには、次のことを試すことができます。

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 に答える