【问题标题】:Retrieve data from XML从 XML 检索数据
【发布时间】:2023-04-01 13:15:01
【问题描述】:

我有一个肥皂网络服务,它返回给定的响应:

<soap:Envelope xmlns:soap="">
<soap:Body>
  <ns2:getRegisterValuesResponse xmlns:ns2="">
     <return>
        <id>11931</id>
        <value>0</value>
     </return>
     <return>
        <id>11946</id>
        <value>0</value>
     </return>
     <return>
        <id>11961</id>
        <value>0</value>
     </return>
  </ns2:getRegisterValuesResponse>
</soap:Body>
</soap:Envelope>

如何在 java 方法中检索给定的整数?

这是我的方法。我们的想法是使用给定的 id 和值每 X 分钟更新一次数据库。

public class RegisterLog implements Job {

public void execute(final JobExecutionContext ctx)
        throws JobExecutionException {
    SimulatorSOAPClientSAAJ sc=new SimulatorSOAPClientSAAJ();
    SOAPMessage msg = sc.sOAPConnect();
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    try {
        msg.writeTo(out);
    } catch (SOAPException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    String strMsg = new String(out.toByteArray());
    System.out.println(strMsg);

【问题讨论】:

    标签: java xml web-services soap


    【解决方案1】:

    使用 DOM XML 解析器 http://www.w3schools.com/dom/default.asp

    进口

    import java.io.ByteArrayInputStream;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    
    import org.w3c.dom.*;
    

    代码

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    ByteArrayInputStream bais = new ByteArrayInputStream(out.toByteArray());
    Document doc = dBuilder.parse(bais);
    doc.getDocumentElement().normalize();
    NodeList nList = doc.getElementsByTagName("return");
    for (int i=0;i<nList.getLength();i++) {
       Node nNode = nList.item(i);
       if (nNode.getNodeType() == Node.ELEMENT_NODE) {
          Element curElement = (Element) nNode;
          int id = Integer.parseInt(curElement.getElementsByTagName("id").item(0).getTextContent()); 
          String value = curElement.getElementsByTagName("value").item(0).getTextContent();   
       }
    }
    

    【讨论】:

    • 效果很好。竖起大拇指。
    • @PiotrCzapla,谢谢!乐于助人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2021-03-27
    相关资源
    最近更新 更多