Kyero/src/main/java/org/openestate/io/kyero/converters/Kyero_3.java
@SuppressWarnings("Duplicates")
    protected void downgradeUrlElements(Document doc) throws JaxenException {
        List nodes = XmlUtils.newXPath(
                "/io:root/io:property/io:url",
                doc).selectNodes(doc);
        for (Object item : nodes) {
            Element node = (Element) item;

            String enUrlValue = null;
            String fallbackUrlValue = null;
            List childNodes = XmlUtils.newXPath(
                    "*", doc).selectNodes(node);
            for (Object childItem : childNodes) {
                Element langNode = (Element) childItem;
                if ("en".equalsIgnoreCase(langNode.getLocalName()))
                    enUrlValue = StringUtils.trimToNull(langNode.getTextContent());
                else if (fallbackUrlValue == null)
                    fallbackUrlValue = StringUtils.trimToNull(langNode.getTextContent());
                node.removeChild(langNode);
            }

            node.setTextContent((enUrlValue != null) ? enUrlValue : fallbackUrlValue);
        }
    }
@SuppressWarnings("Duplicates")
    protected void downgradeUrlElements(Document doc) throws JaxenException {
        List nodes = XmlUtils.newXPath(
                "/io:root/io:property/io:url",
                doc).selectNodes(doc);
        for (Object item : nodes) {
            Element node = (Element) item;

            String enUrlValue = null;
            String fallbackUrlValue = null;
            List childNodes = XmlUtils.newXPath(
                    "*", doc).selectNodes(node);
            for (Object childItem : childNodes) {
                Element langNode = (Element) childItem;
                if ("en".equalsIgnoreCase(langNode.getLocalName()))
                    enUrlValue = StringUtils.trimToNull(langNode.getTextContent());
                else if (fallbackUrlValue == null)
                    fallbackUrlValue = StringUtils.trimToNull(langNode.getTextContent());
                node.removeChild(langNode);
            }

            node.setTextContent((enUrlValue != null) ? enUrlValue : fallbackUrlValue);
        }
    }
@ SuppressWarnings ( "Duplicates" ) protected void downgradeUrlElements ( Document doc ) throws JaxenException { List nodes = XmlUtils . newXPath ( "/io:root/io:property/io:url" , doc ) . selectNodes ( doc ) ; for ( Object item : nodes ) { Element node = ( Element ) item ; String enUrlValue = null ; String fallbackUrlValue = null ; List childNodes = XmlUtils . newXPath ( "*" , doc ) . selectNodes ( node ) ; for ( Object childItem : childNodes ) { Element langNode = ( Element ) childItem ; if ( "en" . equalsIgnoreCase ( langNode . getLocalName ( ) ) ) enUrlValue = StringUtils . trimToNull ( langNode . getTextContent ( ) ) ; else if ( fallbackUrlValue == null ) fallbackUrlValue = StringUtils . trimToNull ( langNode . getTextContent ( ) ) ; node . removeChild ( langNode ) ; } node . setTextContent ( ( enUrlValue != null ) ? enUrlValue : fallbackUrlValue ) ; } }
Downgrade &lt;url&gt; elements to Kyero 2.1.
<p>
The &lt;url&gt; elements only support a simple text value in version
2.1. Version 3 allows different URL's for different languages.
<p>
Any children of &lt;url&gt; elements are removed. The english URL or the
first found URL is copied as simple value into the &lt;url&gt; element.

@param doc Kyero document in version 3
@throws JaxenException if xpath evaluation failed
Downgrade &lt ; url&gt ; elements to Kyero 2 . 1 . <p > The &lt ; url&gt ; elements only support a simple text value in version 2 . 1 . Version 3 allows different URL s for different languages . <p > Any children of &lt ; url&gt ; elements are removed . The english URL or the first found URL is copied as simple value into the &lt ; url&gt ; element .