Вземете Child елемент в XML от XPath java

Имам XML, показан по-долу:

<element type="PRICE_SPECIFIC_SIMPLE_QUERY">
    <query>
        <and>
            <match field="product" value="Bottle"/>
            <not>
                <match field="status" value="Cancel"/>
            </not>
            <not>
                <match field="material">
                    <value>GLASS</value>
                    <value>METAL</value>
                </match>
            </not>
            <greaterThan field="LastDateToPrice" value="2017-12-20"/>
            <match field="company" value="MILTON"/>
        </and>
    </query>
</element>

С XPath = /element[@type='PRICE_SPECIFIC_SIMPLE_QUERY', искам вътрешен XML като низ...както е показано по-долу:

<query>
    <and>
        <match field="product" value="Bottle"/>
        <not>
            <match field="status" value="Cancel"/>
        </not>
        <not>
            <match field="material">
                <value>GLASS</value>
                <value>METAL</value>
            </match>
        </not>
        <greaterThan field="LastDateToPrice" value="2017-12-20"/>
        <match field="company" value="MILTON"/>
    </and>
</query>

Но с наличните онлайн примери получавам вътрешни стойности, но не и XML. Моят примерен код е показан по-долу:

    XPathFactory xpathFactory = XPathFactory.newInstance();

    XPath xpath = xpathFactory.newXPath();
    String queryType = "ICE_SPECIFIC_SIMPLE_QUERY";

    XPathExpression expr = xpath.compile("/element[@type='" + queryType + "']");
    String innerElement = (String) expr.evaluate(doc, XPathConstants.STRING);

Действителен резултат: СТЪКЛО \n МЕТАЛ


person pankaj_ar    schedule 07.02.2018    source източник
comment
Постигнахте ли някакъв успех, като опитахте решението, споменато по-долу?   -  person hiren    schedule 09.02.2018


Отговори (2)


По принцип трябва първо да получите възела (пълния XML фрагмент) и едва след това да го конвертирате в String, като използвате някаква функция като nodeToString в този отговор.

person Edvins    schedule 07.02.2018

Предполагам, че това, което търсите, е innerHTML.

Това може да помогне:

String source = driver.findElement(By.xpath("/element[@type='PRICE_SPECIFIC_SIMPLE_QUERY'")).getAttribute("innerHTML");

person hiren    schedule 07.02.2018