[ 
https://issues.apache.org/jira/browse/VELTOOLS-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17699514#comment-17699514
 ] 

steven van vlierberghe commented on VELTOOLS-197:
-------------------------------------------------

An explanation for the difference between XMmlTools 2.0 and XmlTools 3.1
can be found in the XmlTools.toString () method  (that gets called when XPath 
returns a NodeSet, to be converted to a String, eventually):
the 2.0 implementation is based on dom4j.Node.asXML()
whereas the 3.1 implementation is based XmlUtils.nodeToString(org.w3c.dom.Node)

Adding a call to org.apache.commons.lang3.StringEscapeUtils.unescapeXml on the 
returned result would solve my problem in 3.1... 

> xmlTool.find("./text()") (XPATH) not the same as xmlTool.getText () (METHOD) 
> when & in text
> -------------------------------------------------------------------------------------------
>
>                 Key: VELTOOLS-197
>                 URL: https://issues.apache.org/jira/browse/VELTOOLS-197
>             Project: Velocity Tools
>          Issue Type: Bug
>          Components: GenericTools
>    Affects Versions: 3.1
>            Reporter: steven van vlierberghe
>            Priority: Major
>
> #foreach ($item2 in $xmlf1.find("/input/rep/x"))
> xpath: ${item2.find("./text()")} xml: $item2.getText()
> #end
> with $xmlf1 an XmlTool instance initialized on the following inputfile:
> {code:java}
> <input>
> <rep>
> <x>R&amp;R</x>
> <x>R&amp;B</x>
> </rep>
> </input>
> {code}
> using VeloctityTools-XmlTool 2.0  :  find("./text()") returns same as 
> getText() for an xmlTool instance  (and complying with the expectation)
> {code:java}
> xpath: R&R   xml:  R&R
> xpath: R&B   xml:  R&B
> {code}
> However, using XmlTool 3.1, the xpath construct does not return the same as 
> the getText,
> so the xpath does not comply with expectation
> {code:java}
> xpath: R&amp;R   xml:  R&R
> xpath: R&amp;B   xml:  R&B
> {code}
>  
> PS:
> it can be solved in 3.1, by replacing $item2.find("./text()")  by   
> $item2.find("./text()").node().getNodeValue()
> BUT
> this really requires to adapt the script
> the actual problem is that I give support in our software to users for 
> running their own Velocity scripts in our software.
> In the next version of our software, we upgraded Velocity + VelocityTools to 
> 3.1 
> and as a consequence, scripts of the users might break; 
> meaning, this regression issue will impose our users to have to adapt their 
> scripts that are used in production
> and for sure, they will not be happy having to do so
>  
> PS2: also have the impression that plainly rendering $item2.find("./text()") 
> as String also looses leading and trailing white space
>  
> PS: the actual reason for upgrading VelocityTools (2.0 > 3.1) is that 
> VeraCode flags the 2.0-related velocity libraries having vulnerabilities (and 
> also dependent libraries like common- beanutils); these vulnerabilities have 
> been solved in 3.1.
> Because there are (to us important) regression issues with upgrading the 
> velocity stuff, we cannot upgrade and therefor remain stuck with flagged 
> vulnerabilities in our software. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@velocity.apache.org
For additional commands, e-mail: dev-h...@velocity.apache.org

Reply via email to