2

可能重复:
如何使用 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());
4

2 回答 2

1

您可以执行以下操作:

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

XPath API

您还可以使用javax.xml.xpathAPI:

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

}
于 2012-08-21T21:21:19.090 回答
0

吉他罗卡。

当我开始学习使用 Java 进行 XML 解析时,我遵循了本教程

使用 STaX 你将需要这样的东西(不会发布完整的代码列表):

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

如果您坚持获取一个特定的标签值,您应该查看 DOM 解析器,它从 XML 文档构建一棵树,因此您将能够访问元素“性别”(DOM 的示例在下面的链接中列出)。好的

于 2012-08-21T22:10:15.603 回答