VTD 出错 XML 发现幽灵/不存在的路径
Error with VTD XML finding ghost / non existent paths
我有一个 XML 块,如下所示,其中包含 3 个 attachmentBinary 元素(尽管为了便于阅读而被截断):
<MyRequest>
<MojNumber>219</MojNumber>
<AttachmentBinary fileExtension="image/jpeg">/9j/4UK8RXhpZgAASUkqAAgAAAAMAAABBAABAAAAAAoAAAEBBAABAAAAAAABABAgAJAAAApgAAABIBAwABAAAAAQAAABoBBQABAAAAsAAAABsBBQABAAAgAAADEBAgAOAAAAwAAAADIBAgAUAAAAzgAAABMCAwABAAAAAQAAAGmHBA</AttachmentBinary>
<AttachmentBinary fileExtension="image/jpeg">/9j/4UE1RXhpZgAASUkqAAgAAAAMAAABBAABAAAAAAoAAAEBBAABAAAAAA5QCMg7udvGabszG8hX5M5JZhk/SrFvuV0Q7dmx87s4c8LUlwrRqrKWyBl</AttachmentBinary>
<AttachmentBinary fileExtension="image/jpeg">/9j/4SfRRXhpZgAASUkqAAgAAAAMAAABBAABAAAAAAoAAAEBBAABAAAAAASTwcU+GZSThd3y4J6GpAm8ysxDmQALk71A9hVKTvcznHS5gSh2LSgkEgyG</AttachmentBinary>
</MyRequest>
我的VTD-XMLJava先提取fileExtension和主要Base64编码的jpg代码如下:
try {
ap.selectXPath("/MyRequest/AttachmentBinary/text()");
} catch (XPathParseException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
int i = 0;
while ((i = ap.evalXPath()) != -1) {
// i points to text node of
String ext = vn.toString(vn.getAttrVal("fileExtension"));
System.out.println("ext is:"+ ext);
String s = vn.toRawString(i);
}
然而我得到了 6 次而不是 3 次点击。在这些中只有 3 个产生可见图像。
你的 xpath 要求一个没有属性节点的文本节点...所以你应该使用 /MyRequest/AttachmentBinary
,没有文本()...然后 ext 就可以了...
但要获取 text(),您需要调用 getText() 并确保它不是 -1。
我有一个 XML 块,如下所示,其中包含 3 个 attachmentBinary 元素(尽管为了便于阅读而被截断):
<MyRequest>
<MojNumber>219</MojNumber>
<AttachmentBinary fileExtension="image/jpeg">/9j/4UK8RXhpZgAASUkqAAgAAAAMAAABBAABAAAAAAoAAAEBBAABAAAAAAABABAgAJAAAApgAAABIBAwABAAAAAQAAABoBBQABAAAAsAAAABsBBQABAAAgAAADEBAgAOAAAAwAAAADIBAgAUAAAAzgAAABMCAwABAAAAAQAAAGmHBA</AttachmentBinary>
<AttachmentBinary fileExtension="image/jpeg">/9j/4UE1RXhpZgAASUkqAAgAAAAMAAABBAABAAAAAAoAAAEBBAABAAAAAA5QCMg7udvGabszG8hX5M5JZhk/SrFvuV0Q7dmx87s4c8LUlwrRqrKWyBl</AttachmentBinary>
<AttachmentBinary fileExtension="image/jpeg">/9j/4SfRRXhpZgAASUkqAAgAAAAMAAABBAABAAAAAAoAAAEBBAABAAAAAASTwcU+GZSThd3y4J6GpAm8ysxDmQALk71A9hVKTvcznHS5gSh2LSgkEgyG</AttachmentBinary>
</MyRequest>
我的VTD-XMLJava先提取fileExtension和主要Base64编码的jpg代码如下:
try {
ap.selectXPath("/MyRequest/AttachmentBinary/text()");
} catch (XPathParseException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
int i = 0;
while ((i = ap.evalXPath()) != -1) {
// i points to text node of
String ext = vn.toString(vn.getAttrVal("fileExtension"));
System.out.println("ext is:"+ ext);
String s = vn.toRawString(i);
}
然而我得到了 6 次而不是 3 次点击。在这些中只有 3 个产生可见图像。
你的 xpath 要求一个没有属性节点的文本节点...所以你应该使用 /MyRequest/AttachmentBinary
,没有文本()...然后 ext 就可以了...
但要获取 text(),您需要调用 getText() 并确保它不是 -1。