如何在java中解析soap字符串

如何在java中解析soap字符串,java,soap,jdom,jdom-2,Java,Soap,Jdom,Jdom 2,我已经编写了下面的代码来解析java中的字符串,但它并没有打印出一条空白消息 如何从SOAP消息中获取特定部分并获取它们的值? 我想获取请求中的错误和消息 String xml = "<?xml version='1.0' encoding='UTF-8'?>" + "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">" + "<S:

我已经编写了下面的代码来解析java中的字符串,但它并没有打印出一条空白消息

如何从SOAP消息中获取特定部分并获取它们的值? 我想获取请求中的错误和消息

String xml = "<?xml version='1.0' encoding='UTF-8'?>"
             + "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">"
             + "<S:Body>"
             + "<ns2:processResponse xmlns:ns2=\"http://ws.xxxxx.com/\">"
             + "<response><direction>response</direction>"
             + "<reference>09FG10021008111306320</reference>"
             + "<amount>0.0</amount>"
             + "<totalFailed>0</totalFailed>"
             + "<totalSuccess>0</totalSuccess>"
             + "<error>1</error>"
             + "<message>Invalid</message>"
             + "<otherReference>6360e28990c743a3b3234</otherReference>"
             + "<action>FT</action>"
             + "<openingBalance>0.0</openingBalance>"
             + "<closingBalance>0.0</closingBalance>"
             + "</response>"
             + "</ns2:processResponse>"
             + "</S:Body>"
             + "</S:Envelope>\n";

         SAXBuilder builder = new SAXBuilder();
            Reader in = new StringReader(xml);
            Document doc = null;
            Element root = null;
            Element meta = null;
            Element error = null;
            Element status_message = null;
            String status_code= "";
            String message = "";
            try
            {
             doc = builder.build(in);
             root = doc.getRootElement();
             meta = root.getChild("processResponse").getChild("response");
             error = meta.getChild("error");
             status_message = meta.getChild("message");
             status_code = error.getText();
             message = status_message.getText();

            }catch (Exception e)
             {
             // do what you want
             }
            System.out.println("status_code: " + status_code + "\nmessage: " + message);
String xml=“”
+ ""
+ ""
+ ""
+“答复”
+“09FG1002100811306320”
+ "0.0"
+ "0"
+ "0"
+ "1"
+“无效”
+“6360e28990c743a3b3234”
+“英尺”
+ "0.0"
+ "0.0"
+ ""
+ ""
+ ""
+“\n”;
SAXBuilder=新SAXBuilder();
Reader in=新的StringReader(xml);
单据单据=空;
元素根=空;
元素meta=null;
元素错误=null;
元素状态\消息=null;
字符串状态_代码=”;
字符串消息=”;
尝试
{
doc=builder.build(内置);
root=doc.getRootElement();
meta=root.getChild(“processResponse”).getChild(“response”);
error=meta.getChild(“错误”);
status_message=meta.getChild(“message”);
status_code=error.getText();
message=status_message.getText();
}捕获(例外e)
{
//做你想做的
}
System.out.println(“状态代码:+状态代码+”\n消息:+消息);
正在生成的响应是 状态代码:
消息:

将xml转换为json,然后您可以用它做任何事情。请记住,创建一个适当的模型类来通过json映射数据

<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20171018</version>
</dependency>

在提取xml中的元素时,代码中出现了一些错误。您可以使用此代码并检查

public static void main(String[] args) {
        String xml = "<?xml version='1.0' encoding='UTF-8'?>"
                + "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">" + "<S:Body>"
                + "<ns2:processResponse xmlns:ns2=\"http://ws.xxxxx.com/\">"
                + "<response><direction>response</direction>" + "<reference>09FG10021008111306320</reference>"
                + "<amount>0.0</amount>" + "<totalFailed>0</totalFailed>" + "<totalSuccess>0</totalSuccess>"
                + "<error>1</error>" + "<message>Invalid</message>"
                + "<otherReference>6360e28990c743a3b3234</otherReference>" + "<action>FT</action>"
                + "<openingBalance>0.0</openingBalance>" + "<closingBalance>0.0</closingBalance>" + "</response>"
                + "</ns2:processResponse>" + "</S:Body>" + "</S:Envelope>\n";

        SAXBuilder builder = new SAXBuilder();
        Reader in = new StringReader(xml);
        Document doc = null;
        Element root = null;
        Element error = null;
        Element status_message = null;
        String status_code = "";
        String message = "";
        try {
            doc = builder.build(in);
            root = doc.getRootElement();
            Element body = root.getChild("Body", Namespace.getNamespace("S", "http://schemas.xmlsoap.org/soap/envelope/"));
            Element processResponse = body.getChild("processResponse", Namespace.getNamespace("ns2", "http://ws.xxxxx.com/"));
            Element response = processResponse.getChild("response");
            error = response.getChild("error");
            status_message = response.getChild("message");
            status_code = error.getText();
            message = status_message.getText();

        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("status_code: " + status_code + "\nmessage: " + message);
    }
{"test": {
"attrib": "moretest",
"content": "Turn this to JSON"
}}
public static void main(String[] args) {
        String xml = "<?xml version='1.0' encoding='UTF-8'?>"
                + "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">" + "<S:Body>"
                + "<ns2:processResponse xmlns:ns2=\"http://ws.xxxxx.com/\">"
                + "<response><direction>response</direction>" + "<reference>09FG10021008111306320</reference>"
                + "<amount>0.0</amount>" + "<totalFailed>0</totalFailed>" + "<totalSuccess>0</totalSuccess>"
                + "<error>1</error>" + "<message>Invalid</message>"
                + "<otherReference>6360e28990c743a3b3234</otherReference>" + "<action>FT</action>"
                + "<openingBalance>0.0</openingBalance>" + "<closingBalance>0.0</closingBalance>" + "</response>"
                + "</ns2:processResponse>" + "</S:Body>" + "</S:Envelope>\n";

        SAXBuilder builder = new SAXBuilder();
        Reader in = new StringReader(xml);
        Document doc = null;
        Element root = null;
        Element error = null;
        Element status_message = null;
        String status_code = "";
        String message = "";
        try {
            doc = builder.build(in);
            root = doc.getRootElement();
            Element body = root.getChild("Body", Namespace.getNamespace("S", "http://schemas.xmlsoap.org/soap/envelope/"));
            Element processResponse = body.getChild("processResponse", Namespace.getNamespace("ns2", "http://ws.xxxxx.com/"));
            Element response = processResponse.getChild("response");
            error = response.getChild("error");
            status_message = response.getChild("message");
            status_code = error.getText();
            message = status_message.getText();

        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("status_code: " + status_code + "\nmessage: " + message);
    }
status_code: 1
message: Invalid