2

通常、PHP では、不要な要素を無視して古いドキュメントを解析し、新しいドキュメントに書き込みます。

4

2 に答える 2

1

これは私が思いついた最初の解決策でした:

            DocumentBuilder builder = DocumentBuilderFactory
                                      .newInstance()
                                      .newDocumentBuilder();

            StringReader reader = new StringReader( xml );
            Document document = builder.parse( new InputSource(reader) );

            XPathExpression expr = XPathFactory
                                   .newInstance()
                                   .newXPath()
                                   .compile( ... );

            Object result = expr.evaluate(document, XPathConstants.NODESET);

            Element el = document.getDocumentElement();
            NodeList nodes = (NodeList) result;
            for (int i = 0; i < nodes.getLength(); i++) {
                el.removeChild( nodes.item(i) );
            }

ご覧のとおり、ちょっと長いです。シンプルさを追求するコーダーとして、より良い解決策を見つけられることを期待して、Ahmed のアドバイスに従うことにしました。

            List<?> elements = page.getByXPath( ... );

            DomNode node = null;
            for( Object o : elements ) {
                node = (DomNode)o;
                node.getParentNode().removeChild( node );
            }

これらは単なるスニペットであることに注意してください。インポートと XPath 式は省略しましたが、おわかりいただけると思います。

于 2010-09-26T14:55:44.753 に答える
0

DOM メソッドを見てください。ノードを削除できます。

http://htmlunit.sourceforge.net/apidocs/com/gargoylesoftware/htmlunit/html/DomNode.html

于 2010-09-25T07:49:56.213 に答える