如何从Java中的文本中获取整个XML

时间:2015-11-11 19:49:48

标签: java xml xml-parsing saxparser domparser

我有两个不同的字符串,例如:

1)

HTTP/1.1 200 OK
Content-Length: 144
content-type: application/xml
Date: Wed, 11 Nov 2015 12:57:07 GMT
Server: Jetty(7.5.4.v20111024)
Note: Header order may not reflect actual transmitted stream.

<?xml version="1.0" encoding="UTF-8"?>
<Log>
  <Code>0</Code>
  <SensitiveData2>Data Is Here</SensitiveData2>
</Log>

2)

HTTP/1.1 200 OK
Content-Type: text/xml;charset=UTF-8
Content-Length: 1099
Server: Jetty(7.5.4.v20111024)

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Response_Phase_IIResponse xmlns="http://tempuri.org/">
      <Response_Phase_IIResult>
        <Address_Parameters_Phase_II>
          <Setup_In_CRM>NO</Setup_In_CRM>
          <CRM_Profile_ID>0</CRM_Profile_ID>
        </Address_Parameters_Phase_II>
      </Response_Phase_IIResult>
    </Response_Phase_IIResponse>
  </soap:Body>
</soap:Envelope>

我需要解析这些字符串并从根节点获取整个XML元素而不使用任何标头。我如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

  1. 删除标题 -
  2. 之前的所有内容
      

    &LT;?xml的

      

    &LT;肥皂:

    1. 使用一些库进行XML文档解析。例如,JAXP

答案 1 :(得分:0)

如果这些是httpResponse对象,你不应该修改它们来阅读它们。标题和正文分别访问。

这是一个例子(可能是不完美的代码,但它有效):

        SOAPConnection connection = SOAPConnectionFactory.newInstance().createConnection();
        URL endpoint = null;
        try {
        endpoint =
      new URL(new URL(url), path, new URLStreamHandler() {
                @Override
                protected URLConnection openConnection(URL url) throws IOException {
                      URL target = new URL(url.toString());
                      URLConnection connection = target.openConnection();
                      // Connection settings
                      connection.setConnectTimeout(10000); // 10 sec
                      connection.setReadTimeout(30000); // 1 min
                      return(connection);
                    }
                  });
        } catch (Exception e) {
            throw new SOAPException("Connection unavailable");
        }
        SOAPMessage response = null;
        try {
            response = connection.call(message, endpoint);
        } catch (SOAPException e) {
            connection.close();
            throw new SOAPException(e);
        } 
        try {
            SOAPBody responseBody = response.getSOAPBody();
            if(responseBody.getFault()!=null){
            throw new SOAPException("Message unreadable");
            }
        } catch (SOAPException e) {
            connection.close();
            throw new SOAPException(e);
        } 
        connection.close(); 

此声明,&#34; SOAPBody responseBody = response.getSOAPBody();&#34;得到肥皂的身体。

如果您正在处理完全复制的字符串,那么您需要使用RegX来处理不是XML主体的位。