1

vtd-xml xml修飾子クラスで以下のことを実現したい。

Original xml 
<xml>
   <element attr1='1' attr2='2' attr3='3'>text</element>
</xml>

int p = vn.getText()
xm.updateToken(p, "new text");

ただし、ここのコードはテキストを新しいテキストに変更していますが、すべての属性をコピーしているわけではありません。これを達成する方法はありますか?

他のオプションは、 xm.remove() を呼び出してからタグを追加することです。しかし、属性を新しいタグにコピーする方法がわかりません。


バラちゃんありがとう

Edit

testAP.selectXPath("pn[@category]");

while((j = testAP.evalXPath()) != -1)
{
     int p = vn.getText();
     xm.updateToken(p, "new text");
}

XML

<pn category = "ONE" GENERAL0 = "0" GENERAL1 = "-1" >previoustext</pn>

上記がコードです。

4

1 に答える 1

1

問題を再現できません...以下の例でxmlテキストを使用しました。得られた出力は次のとおりです。

                 <pn category="ONE" GENERAL0="0" GENERAL1="-1" >new text</pn>

以下は私が使用したテストコードです

        String s = "<pn category=\"ONE\" GENERAL0=\"0\" GENERAL1=\"-1\" >previoustext</pn>";
        vg.setDoc(s.getBytes());
        vg.parse(true);
        vn = vg.getNav();
        AutoPilot testAP = new AutoPilot(vn);
        testAP.selectXPath("/pn[@category]"); 
        xm.bind(vn);
        int j; 
        while((j = testAP.evalXPath()) != -1) 
        { 
             int p = vn.getText(); 
             xm.updateToken(p, "new text"); 
        } 
        XMLByteOutputStream xbos =new XMLByteOutputStream(xm.getUpdatedDocumentSize());
        xm.output(xbos);
        System.out.println(new String(xbos.getXML()));

vtd-xml の最新バージョンを使用しましたか?

于 2010-05-07T19:10:12.533 に答える