如何使用Java检索XML的元素值?

2022-08-31 17:44:48

我是 XML 的新手。我想根据请求名称读取以下XML。请帮助我了解如何在Java中阅读下面的XML -

<?xml version="1.0"?>
    <config>
        <Request name="ValidateEmailRequest">
            <requestqueue>emailrequest</requestqueue>
            <responsequeue>emailresponse</responsequeue>
        </Request>
        <Request name="CleanEmail">
            <requestqueue>Cleanrequest</requestqueue>
            <responsequeue>Cleanresponse</responsequeue>
        </Request>
    </config>

答案 1

如果您的 XML 是字符串,则可以执行以下操作:

String xml = ""; //Populated XML String....

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml)));
Element rootElement = document.getDocumentElement();

如果您的 XML 位于文件中,则将按如下方式实例化:Document document

Document document = builder.parse(new File("file.xml"));

将返回作为文档的文档元素的节点(在您的情况下)。document.getDocumentElement()<config>

一旦你有了,你就可以访问元素的属性(通过调用方法)等。有关java的org.w3c.dom.Element的更多方法rootElementrootElement.getAttribute()

有关 java DocumentBuilder & DocumentBuilderFactory 的更多信息请记住,提供的示例创建了一个 XML DOM 树,因此,如果您有一个巨大的 XML 数据,则该树可能很大。


更新下面是获取元素“值”的示例<requestqueue>

protected String getString(String tagName, Element element) {
        NodeList list = element.getElementsByTagName(tagName);
        if (list != null && list.getLength() > 0) {
            NodeList subList = list.item(0).getChildNodes();

            if (subList != null && subList.getLength() > 0) {
                return subList.item(0).getNodeValue();
            }
        }

        return null;
    }

你可以有效地称之为,

String requestQueueName = getString("requestqueue", element);

答案 2

如果您只需要一个(第一个)值即可从 xml 中检索:

public static String getTagValue(String xml, String tagName){
    return xml.split("<"+tagName+">")[1].split("</"+tagName+">")[0];
}

如果你想解析整个xml文档,请使用JSoup:

Document doc = Jsoup.parse(xml, "", Parser.xmlParser());
for (Element e : doc.select("Request")) {
    System.out.println(e);
}

推荐