Java 如何使用StaX获取特定XML标记的值

Java 如何使用StaX获取特定XML标记的值,java,xml,tags,stax,Java,Xml,Tags,Stax,可能重复: 嘿,伙计们,我有一个XML文件,我想让Java吐出一个特定标记的值。例如,下面是我的XML: <?xml version="1.0"?> <dennis> <hair>brown</hair> <pants>blue</pants> <gender>male</gender> </dennis> 您可以执行以下

可能重复:

嘿,伙计们,我有一个XML文件,我想让Java吐出一个特定标记的值。例如,下面是我的XML:

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

您可以执行以下操作:

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

您还可以使用
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);
    }

}
用于UM12062255的包;
导入java.io.StringReader;
导入javax.xml.xpath.*;
导入org.xml.sax.InputSource;
公共类XPathDemo{
私有静态最终字符串XML=“brownbluemale”;
公共静态void main(字符串[]args)引发异常{
XPathFactory xpf=XPathFactory.newInstance();
XPath=xpf.newXPath();
InputSource InputSource=新的InputSource(新的StringReader(XML));
字符串结果=(字符串)xPath.evaluate(“//性别”,inputSource,XPathConstants.String);
系统输出打印项次(结果);
}
}
吉塔罗卡

当我开始学习用Java进行XML解析时,我遵循了这一原则

使用STaX,您将需要以下内容(不会发布完整的代码列表):

如果您坚持要获取一个特定的标记值,那么应该查看DOM解析器,它会从XML文档中构建一个树,这样您就可以访问元素“性别”(中列出了DOM的示例)。 好

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);
    }

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