错误与VTD XML寻找幽灵/不存在的路径



我有一个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>

首先提取fileExtension和主要Base64编码的jpg的VTD-XML Java代码如下:

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就可以了……

但是要获得文本(),您需要调用getText()并确保它不是-1

最新更新