Search code examples
javaxmlxpathvtd-xml

Using xpath and vtd-xml to get sub nodes and text of an element as a string


This is a portion of my XML:

<MAIN>
    <L>
        <D>string1 string2 <b>string3</b> string4</D>
    </L>
    <L>
        <D>string5 string6 <b>string7</b> string8 <i>string9</i></D>
    </L>
</MAIN>

I want to get the content of all the <D> tags as string. So, the example above should return:

1st iteration: 'string1 string2 <b>string3</b> string4'
2nd iteration: 'string5 string6 <b>string7</b> string8 <i>string9</i>'
etc...

In vtd-xml I used an AutoPilot with XPath "//L/D" and "//L/D/text()" but that did not work.

Any advice or alternative approach will be appreciated.

Regards


Solution

  • Below is the code that does what you are looking for.

        VTDGen vg =  new VTDGen();
        if (vg.parseFile("c://xml//alex.txt", true)){
            VTDNav vn = vg.getNav();
            AutoPilot ap = new AutoPilot(vn);
            ap.selectXPath("//L/D");
            int i=-1;
            while((i=ap.evalXPath())!=-1){
                long l = vn.getContentFragment();
                System.out.println(" -==> "+ vn.toString((int )l, (int)(l>>32)));
            }
        }