3

Android アプリケーションを開発していますが、アプリケーションのコードで XML ファイルの小さなコンテンツを削除したいと考えています。以下の内容を削除したいと思います。

<pma:structure_schemas>
    <pma:database name="test" collation="latin1_swedish_ci" charset="latin1">
        <pma:table name="agenda">
            CREATE TABLE `agenda` (
              `id` int(2) NOT NULL AUTO_INCREMENT,
              `title` varchar(60) NOT NULL,
              `description` varchar(1000) NOT NULL,
              `town` varchar(30) NOT NULL,
               PRIMARY KEY (`id`)
            ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
        </pma:table>
    </pma:database>
</pma:structure_schemas>

方法について何か考えはありますか?

4

3 に答える 3

2

次のコードを使用できます。

import java.io.File;
import javax.xml.*;
import org.w3c.dom.*;

public class DeleteXmlNode {

    public static void deleteNode(String nodedetailsExpression) {//Use your expression here depending upon the node you wnt to delete

        try{
        XPathFactory xPathFactory = XPathFactory.newInstance();
        XPath xpath = xPathFactory.newXPath();
        XPathExpression expression = xpath.compile(nodedetailsExpression);
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        Document document = documentBuilderFactory.newDocumentBuilder().parse(new File("test.xml"));
        Node node = (Node) expression.evaluate(document, XPathConstants.NODE);
        node.getParentNode().removeChild(node);
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        transformer.transform(new DOMSource(document), new StreamResult(System.out));
        }catch(Exception e){
        //Do your Exception handling over here.
    }

}

ここでは、削除するノードの式文字列を渡す必要があります。

于 2013-04-04T13:08:37.563 に答える
0

VTD-XMLで要素を削除するコードを次に示します。DOM よりもはるかに簡潔で効率的であることに注意してください。

import com.ximpleware.*;
import java.io.*;

public class removeElement {
    public static void main(String s[]) throws VTDException,IOException{
        VTDGen vg = new VTDGen();
        if (!vg.parseFile("input.xml", false))
            return;
        VTDNav vn = vg.getNav();
        XMLModifier xm = new XMLModifier(vn);
        AutoPilot ap = new AutoPilot(vn);
        ap.selectXPath("/ClOrdIDS/ClOrdID[@id='3']");
        int i=0;
        while((i=ap.evalXPath())!=-1){
            xm.remove();
        }
        xm.output("output.xml");
    }
}
于 2016-04-18T21:49:06.923 に答える