Как получить значение определенного тега XML с помощью StaX

Возможный дубликат:
Как использовать StaX

Привет, ребята, у меня есть файл XML, и я хочу, чтобы Java выдавала значение определенного тега. Например, вот мой XML:

<?xml version="1.0"?>
    <dennis>
        <hair>brown</hair>
        <pants>blue</pants>
        <gender>male</gender>
    </dennis>

Итак, скажем, я хочу, чтобы Java выдавала значение «пола», есть ли код, который я мог бы использовать, например

XMLStreamReader.goToTag("gender");
System.out.println(XMLStreamReader.getLocalName());

person Nigh7Sh4de    schedule 21.08.2012    source источник


Ответы (2)


Вы можете сделать следующее:

StreamSource xml = new StreamSource("input.xml");
XMLStreamReader xsr = xif.createXMLStreamReader(xml);
xsr.nextTag();
while(!xsr.getLocalName().equals("gender")) {
    xsr.nextTag();
}

API XPath

Вы также можете использовать javax.xml.xpath API:

package forum12062255;

import java.io.StringReader;
import javax.xml.xpath.*;
import org.xml.sax.InputSource;

public class XPathDemo {

    private static final String XML = "<dennis><hair>brown</hair><pants>blue</pants><gender>male</gender></dennis>";

    public static void main(String[] args) throws Exception {
        XPathFactory xpf = XPathFactory.newInstance();
        XPath xPath = xpf.newXPath();

        InputSource inputSource = new InputSource(new StringReader(XML));
        String result = (String) xPath.evaluate("//gender", inputSource, XPathConstants.STRING);
        System.out.println(result);
    }

}
person bdoughan    schedule 21.08.2012

Гитаррока.

Когда я начал изучать синтаксический анализ XML с помощью Java, я следовал этому руководству.

Используя STaX, вам понадобится что-то вроде этого (не буду публиковать полный список кодов):

 if (event.asStartElement().getName().getLocalPart().equals("gender"))

Если вы настаиваете на получении одного определенного значения тега, вам следует просмотреть анализатор DOM, он строит дерево из XML-документа, поэтому вы сможете получить доступ к элементу «пол» (примеры DOM перечислены в ссылка ниже). Хорошо

person tkachuko    schedule 21.08.2012