私はこのメソッドを持っていますが、私は同じクライアントからすべての注文を削除する必要があります。ここで私はここにWhile(web services netbeans)
<encomendas>
<encomenda cod="enc4" data="2016-04-23" cliente="cli5" status="pendente">
<enc quant="3">9789722523288</enc>
<enc quant="1">9789726656272</enc>
</encomenda>
<encomenda cod="enc5" data="2016-05-16" cliente="cli7" status="pendente">
<enc quant="1">9789720043702</enc>
<enc quant="1">9789724146348</enc>
<enc quant="2">9789724121390</enc>
<enc quant="1">9789720046451</enc>
</encomenda>
<encomenda cod="enc6" data="2016-04-23" cliente="cli5" status="pendente">
<enc quant="3">9789722523288</enc>
<enc quant="1">9789726656272</enc>
</encomenda>
</encomendas>
を除去していたから.xmlファイルは、私が
@WebMethod(operationName = "removeorder2")
public String removeorder2(@WebParam(name = "cliente") String id) {
URL u = this.getClass().getResource("orders.xml");
Document doc = XMLJDomFunctions.lerDocumentoXML(u.getFile());
Element encomendas = doc.getRootElement();
for (int i = 0; i < encomendas.getChildren().size(); i++) {
Element filho = encomendas.getChildren().get(i);
if (filho.getAttribute("cliente").getValue().equals(id)) {
encomendas.getChildren().remove(i);
XMLJDomFunctions.escreverDocumentoParaFicheiro(doc, u.getFile());
return "order removed";
}
}
return "order doesnt exist";
}
をしたが、私は削除したいクライアントを挿入すると、このように私は一つだけを削除していたコードがされています。 たとえば、cli5を挿入すると、見つけた最初のcli5が削除されます。私はちょっとしたことがありますが、私は方法を知らないので、私はいくつかのクライアントを数えてxpathを作るのですか、それを簡単にする方法がありますか?
私はあなたの質問を理解するとは思わない...しかしそれは働いた!ご協力ありがとうございました。 – user6236820
メソッド 'escreverDocumentoParaFicheiro'はファイルを変更することです。たとえば、ファイル内にcli5 cli5 cli7 cli5がある場合、cli5を削除すると、そのメソッドがファイルに変更を書き込むので、cli7のみが表示されます。 – user6236820
また、次のループのインデックスを再確認する必要があります。 たとえば、a、b、b、cの4つのアイテムがあり、bアイテムをすべて削除したいとします。インデックス1の最初のbを探し、それを削除します。 何が起こるか:今度は2番目のbのインデックスはインデックス1です。しかし、すでにループを更新しているので、インデックス2をチェックしてそこにcを見つけるでしょう。したがって、第2のbをインデックス1に残し、削除されないようにする。 – berong91