java - 使用VTD-XML仅修改元素文本

标签 java xml xsd vtd-xml

我想在 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() 然后添加标签。但是,我不知道如何将属性复制到新标签。

谢谢
巴拉

编辑

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>

以上是代码。

最佳答案

我无法重现该问题...下面我在示例中使用了 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 吗?

关于java - 使用VTD-XML仅修改元素文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2773722/

相关文章:

java - 如何选择 datetime mysql 类型作为 java.time.LocalDateTime?

java - 如何从 Liferay portlet 中的 URL 获取参数?

java - Apache Spark : issue with Scala example

java - 编译错误 "incompatible types"

xml - 如何在 XSL 中获取嵌套的 xml 标签?

sql - 如何在子查询中使用 FOR XML?

java - Settings.xml 不会让我改变背景颜色?

java - 混合和受限元素无法通过 Xmlbeans 进行验证

java - 使用 xml 模式检查 java 值

xml - 协助在多个元素之间进行 XML XSD 选择