1

XML 解析は初めてです。実行時に SAX パーサーを使用して XML のノードを削除するなどの更新または変更を行い、更新されたデータを XML としてストリーミングしたり、必要に応じて独自の形式に変換したりできますか? DOM パーサーが行うように。

dbFactory = DocumentBuilderFactory.newInstance();
            docBuilder = dbFactory.newDocumentBuilder();
            document = docBuilder.parse("src/"+xmlFile);

             tranformerFactory = TransformerFactory.newInstance();
             transformer = tranformerFactory.newTransformer();

             for (int i = 0; i < inputElementsArrayToRemove.length; i++) 
             {
                 element = (Element)document.getElementsByTagName(inputElementsArrayToRemove[i]).item(0);

                 if(element != null)
                 {
                    // Removes the node from the document
                     element.getParentNode().removeChild(element);
                 }
             }

             // Normalize the DOM tree to combine all adjacent nodes
            document.normalize();

            // Here, transforming(Converting) the document source to the another XML file
            Source source = new DOMSource(document);
            Result dest = new StreamResult(new FileOutputStream(new File("src/"+resultXmlFileName)));

            // transform method to write out the DOM as XML data.
            transformer.transform(source, dest);
4

4 に答える 4

1

はい、XMLReaderおよびXMLFilter API を使用します。例については、この質問回答を参照してください。

于 2012-05-23T09:15:21.863 に答える
0

SAXパーサーを使用してxmlを読み書きできます。編集または更新するには、DOM パーサーのみを使用する必要があります。

于 2012-05-23T08:52:10.200 に答える
0

それはいけません。SAX パーサーはイベントのストリームを生成し、ハンドラーにフィードします。ハンドラーはそれで好きなことをします。

DOM パーサーはノード ツリーを生成し、それを変更して XML として保存することができます (ただし、メモリも消費します)。

XPP パーサーを使用すると、xml イベントをストリームから 1 つずつ引き出すことができ、それをパーサーでラップして、その場でイベントを変更できます。私はあなたの仕事に近づいていると推測します

于 2012-05-23T08:55:30.157 に答える
0

いいえ。SAX は、トークンに遭遇したときに通知するイベント ベースのパーサーです。読書に使用しています。それを使って書くことはできますか?

于 2012-05-23T08:56:46.237 に答える