使用 Java 代码将文本插入由 XPath 表达式定位的 XML 节点
Insert text into an XML node located by an XPath expression with Java code
我有一个这样的 xml 文档:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<request>
<location>
<address />
</location>
</request>
</body>
我的目标是将值 "My Address" 插入此文档,以便:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<request>
<location>
<address>
My Address
</address>
</location>
</request>
</body>
我必须在 java class 中实现这个目标,它必须创建这个文档,从 XML 文件中读取它 (ok) 并且我有一个 XPath 表达式 (/request/location/address) 指示我将文本放在哪里 ("My address")。如何实现允许我从 xml 和 XPath 字符串开始将文本插入节点的 Java class?这个 java class 必须是通用的,不绑定到特定的 XML 结构(这就是为什么我使用 XPath 表达式而不是将 XMl 结构放入 class).我希望我的问题很清楚。
这是执行此操作的代码vtd-xml...
import com.ximpleware.*;
public class insertTextNode {
public static void main(String[] s) throws VTDException, Exception {
VTDGen vg = new VTDGen();
AutoPilot ap = new AutoPilot();
XMLModifier xm = new XMLModifier();
if (vg.parseFile("input.xml", true)) {
VTDNav vn = vg.getNav();
ap.bind(vn);
xm.bind(vn);
ap.selectXPath("/body/request/location/address");
int i=0;
while((i=ap.evalXPath())!=-1){
xm.insertAfterHead("myAddress");
}
xm.output("output.xml");
}
}
}
我有一个这样的 xml 文档:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<request>
<location>
<address />
</location>
</request>
</body>
我的目标是将值 "My Address" 插入此文档,以便:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<request>
<location>
<address>
My Address
</address>
</location>
</request>
</body>
我必须在 java class 中实现这个目标,它必须创建这个文档,从 XML 文件中读取它 (ok) 并且我有一个 XPath 表达式 (/request/location/address) 指示我将文本放在哪里 ("My address")。如何实现允许我从 xml 和 XPath 字符串开始将文本插入节点的 Java class?这个 java class 必须是通用的,不绑定到特定的 XML 结构(这就是为什么我使用 XPath 表达式而不是将 XMl 结构放入 class).我希望我的问题很清楚。
这是执行此操作的代码vtd-xml...
import com.ximpleware.*;
public class insertTextNode {
public static void main(String[] s) throws VTDException, Exception {
VTDGen vg = new VTDGen();
AutoPilot ap = new AutoPilot();
XMLModifier xm = new XMLModifier();
if (vg.parseFile("input.xml", true)) {
VTDNav vn = vg.getNav();
ap.bind(vn);
xm.bind(vn);
ap.selectXPath("/body/request/location/address");
int i=0;
while((i=ap.evalXPath())!=-1){
xm.insertAfterHead("myAddress");
}
xm.output("output.xml");
}
}
}