繁体   English   中英

从String中提取XML中的值

[英]Extract value from XML from String

我做了一些代码,但他们没有工作。 我还需要验证是否存在header:消息

String xml = "<header:HostError>
<header:message>
    <header:messageCode>321</header:messageCode>
    <header:message>test</header:message>
</header:message>
<header:message>
    <header:messageCode>123</header:messageCode>
    <header:message>test</header:message>
</header:message>
</header:HostError>"

如何获取第一个messageCode和消息?

    private void extractErrorsFromResponse(SOAPFaultDetail faultResponse) {

    for (Iterator itr = faultResponse.getAllDetailEntries(); itr.hasNext(); ) {
        Object element = itr.next();
        if (element instanceof OMElement) {             
            Object code = ((OMElement) element).getFirstChildWithName(new QName("message")).getFirstChildWithName(new QName("messageCode"));
            Object message = ((OMElement) element).getFirstChildWithName(new QName("message")).getFirstChildWithName(new QName("message"));
            faultResponse.addDetailEntry(((OMElement) element).cloneOMElement());
        }
    }
}

一个快速的解决方案就是这样。

String xml = "<header:HostError>" +
     "<header:message>\n" +
     "<header:messageCode>321</header:messageCode>\n" +
     "<header:message>test</header:message>\n" +
     "</header:message>\n" +
     "<header:message>\n" +
     "<header:messageCode>123</header:messageCode>\n" +
     "<header:message>test</header:message>\n" +
     "</header:message>\n" +
     "</header:HostError>";

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(new InputSource(new StringReader(xml)));

NodeList list = doc.getElementsByTagName("header:messageCode");

System.out.println("First messageCode : " + list.item(0).getFirstChild().getNodeValue());

NodeList list_ = doc.getElementsByTagName("header:message");
System.out.println("First message : " + list_.item(1).getFirstChild().getNodeValue());

它打印,

First messageCode : 321
First message : test

基于此,您需要找到更通用的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM