Kyero/src/main/java/org/openestate/io/kyero/converters/Kyero_3.java
protected void downgradeNewBuildElements(Document doc) throws JaxenException {
        List nodes = XmlUtils.newXPath(
                "/io:root/io:property/io:new_build",
                doc).selectNodes(doc);
        for (Object item : nodes) {
            Element node = (Element) item;
            Element parentNode = (Element) node.getParentNode();
            String value = StringUtils.trimToNull(node.getTextContent());
            if ("1".equals(value)) {
                Element priceFreqNode = (Element) XmlUtils.newXPath("io:price_freq", doc)
                        .selectSingleNode(parentNode);
                if (priceFreqNode == null) {
                    priceFreqNode = doc.createElementNS(KyeroUtils.NAMESPACE, "price_freq");
                    priceFreqNode.setTextContent("new_build");
                    parentNode.appendChild(priceFreqNode);
                } else if ("sale".equalsIgnoreCase(priceFreqNode.getTextContent())) {
                    priceFreqNode.setTextContent("new_build");
                }
            }
            parentNode.removeChild(node);
        }
    }
protected void downgradeNewBuildElements(Document doc) throws JaxenException {
        List nodes = XmlUtils.newXPath(
                "/io:root/io:property/io:new_build",
                doc).selectNodes(doc);
        for (Object item : nodes) {
            Element node = (Element) item;
            Element parentNode = (Element) node.getParentNode();
            String value = StringUtils.trimToNull(node.getTextContent());
            if ("1".equals(value)) {
                Element priceFreqNode = (Element) XmlUtils.newXPath("io:price_freq", doc)
                        .selectSingleNode(parentNode);
                if (priceFreqNode == null) {
                    priceFreqNode = doc.createElementNS(KyeroUtils.NAMESPACE, "price_freq");
                    priceFreqNode.setTextContent("new_build");
                    parentNode.appendChild(priceFreqNode);
                } else if ("sale".equalsIgnoreCase(priceFreqNode.getTextContent())) {
                    priceFreqNode.setTextContent("new_build");
                }
            }
            parentNode.removeChild(node);
        }
    }
Downgrade &lt;new_build&gt; elements to Kyero 2.1.
<p>
The &lt;new_build&gt; elements are not available in version 2.1. Instead
the value "new_build" is used in the &lt;price_freq&gt; element.
<p>
Any &lt;new_build&gt; elements are removed. If its value is set to "1",
then &lt;price_freq&gt;sale&lt;/price_freq&gt; is converted to
&lt;price_freq&gt;new_build&lt;/price_freq&gt;,

@param doc Kyero document in version 3
@throws JaxenException if xpath evaluation failed