From: kamiseq <ka...@gm...> - 2012-07-23 12:40:46
|
why not if official release is not in few days ;] pozdrawiam Paweł Kamiński ka...@gm... pka...@gm... ______________________ On 23 July 2012 05:33, <jz...@xi...> wrote: > > this bug have been fixed, do u want a quick patch? > > > ----- Original Message ----- > From: > jz...@xi... > > To: > "kamiseq" <ka...@gm...>, <vtd...@li...> > Cc: > > Sent: > Thu, 19 Jul 2012 18:10:12 -0500 > Subject: > Re: [Vtd-xml-users] VTDNav#getElementFragment returns wrong value > > > > First of all, i see that the getElementFragment() includes teh following > comment node, which is not corret, this is confirmed, and will fix it. > thanks for pointing it out! > > Second, your code attempts to navigate teh VTDNav in the xpath evaluation > loop, you have to be careful when doing that, since it will change the > navigation position for the subsequent > > xpath evaluation and may result in wrong results afterward, so the smart > thing is to wrap your code (in teh while loop) with a pair of vn.push()and pop() methods to make sure teh navigation position is restored. > > 2.11 is coming so the fix will come out soon one way or the other > > > ----- Original Message ----- > From: > kamiseq <ka...@gm...> > > To: > <vtd...@li...urceforgenet <vtd...@li...>> > > Cc: > > Sent: > Tue, 3 Jul 2012 21:26:11 +0200 > Subject: > [Vtd-xml-users] VTDNav#getElementFragment returns wrong value > > > hej, > I just run into strange issue when parsing simple xml (html) like this > > <!--[if !IE]><!--> > <style type="text/less" title="main"> > @name=main.css > @import "less/rules.less"; <http://rules.less> > </style> > <!--<![endif]--> > <!--[if lte IE 8]> > <style type="text/less" title="ie8"> > @import "less/rules_lte_ie8.less"; <http://ie8.less> > @import "less/clean.less"; <http://clean.less> > </style> > <![endif]--> > <style type="text/less" title="ie9"> > @import "less/rules_ie9.less"; <http://ie9.less> > @import "less/clean.less"; <http://clean.less> > </style> > <script src="js/main.js" <http://main.js>type="text/javascript"></script> > > maybe my code is wrong but here is what I do (given xml is parsed and nav > and autopilot is created) > > ap.selectXPath("//style/text()); // AutoPilot instance > while ((result = ap.evalXPath()) != -1) > { > String body = vn.toNormalizedString(targetPosition); // this is > ok I get the right content > vn.toElement(VTDNav.PARENT); > int o = (int)vn.getElementFragment(); > int l = (int)(vn.getElementFragment() >> 32); // wrong value > final String s = new String(vn.getXML().getBytes(o, l)); > > // simple workaround > l = s.substring(0, sindexOf("</style>")+8).length(); > modifier.removeContent(o, l); > modifier.insertBeforeElement(replaceString); > } > > new String(vn.getXML().getBytes(o, l)) will return this xml chunk > <style type="text/less" title="main"> > @name=main.css > @import "less/rules.less"; <http://rules.less> > </style> > <!--<![endif]--> > <!--[if lte IE 8]> > <style type="text/less" title="ie8"> > @import "less/rules_lte_ie8.less"; <http://ie8.less> > @import "less/clean.less"; <http://clean.less> > </style> > <![endif]--> > > for first autopilot match. when I call remove on modifier I get > ModifyException("Invalid insertion/deletion condition detected between > offset .. and offset") from XMLModifier. > for next autopilot match everything is fine and vn.getElementFragment()returns right value. > > I think it is all about comment block after style. > > what do you think? is there better solution to that? > > pozdrawiam > Paweł Kamiński > > ka...@gm... > pka...@gm... > ______________________ > > |