1

誰かがデータを XML ファイルに追加するのを手伝ってくれないかと思っていました。以下に、別の xml ファイルからデータを取得し、ロジックを変更して、変更を新しい出力ファイルに書き込むコードを示します。しかし、このAPIを通して見ると

ループ中に新しいファイルにタグをm having trouble understanding which method does appending. It seems like all of them creates a new XML file doc/overwrites an existing one if it exists. I追加しようとしています。

        for(int i = 0; i < itemList.size(); i++){

            //get the specific item node 
            Element item = (Element)itemList.get(i);

            //there are some non item nodes so need this check
            if(item.getName().equals("item")){  

                //do some logic changing to the tags

                //System.out.println(item.getValue());
                //System.out.println(item.getChild("Q").getValue());
                //System.out.println(item.getChild("A").getValue());

                boolean exists = (new File("/Users/davidyu/Desktop/file2.xml")).exists();
                //if file exists
                if(exists){
                    System.out.println("in here1");
                    xmlOutput.?????
                }
                else{
                    System.out.println("in here2");
                    xmlOutput.output(doc, new FileWriter("/Users/davidyu/Desktop/file2.xml"));
                }

            }

私が基本的にやろうとしているのは、ループの反復ごとに新しい項目タグをファイルに書き込むことです。その item タグには、新しい childNodes "Q" と "A" が含まれている必要があります。

これどうやってするの?

4

2 に答える 2

2

これをループで実行していることを考えると、ループの開始前に一度ファイルをロードし、ループを通過して要素をドキュメントに追加し、ループの後に再度保存することは理にかなっています。ファイルが事前に存在しない場合は、適切なルート要素など、必要な構造で新しいドキュメントを作成します (後で保存するため、メモリ内にのみ)。もちろん、新しい要素をどこに追加するかを考える必要があります。

最初に既存のファイルをロードせずに既存の XML ファイルに要素を追加する簡単な方法はありません。(ストリーミング方式で実行できる可能性はありますが、コーディングははるかに複雑になる可能性があります。)

于 2012-07-31T06:26:01.743 に答える
0

XMLOutputter は、既存の XML 構造を宛先 (この場合はファイル) に出力するだけです。あなたは、既存の XML 文書の構造を変更することに関心があるようです。その場合は、コンテンツを追加したい要素への参照を取得したら (Element item = (Element)itemList.get(i);例では)、次のようにする必要があります。

Element newElement = new Element("NewElement");
item.addContent(newElement);

<NewElement/>これにより、要素の下にitem要素が追加されます

<item>
     <NewElement/>
</item>

エレメントのjavadocを参照してください。

于 2012-07-31T07:33:40.493 に答える