我有以下xml响应:
String response =
+"<saml:AuthnStatement AuthnInstant=\"2016-12-14T12:22:26Z\" SessionIndex=\"s2f1ae3bd7397f10c6fd6b3b3f02d8b0611b2da501\">"
+"<saml:AuthnContext>"
+"<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>"
+"</saml:AuthnContext>"
+"</saml:AuthnStatement>"
+"<saml:AttributeStatement>"
+"<saml:Attribute Name=\"uid\">"
+"<saml:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">testing1</saml:AttributeValue>"
+"</saml:Attribute>"
+"<saml:Attribute Name=\"SecurityLevel\">"
+"<saml:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">testing2</saml:AttributeValue>"
+"</saml:Attribute>"
+"<saml:Attribute Name=\"Culture\">"
+"<saml:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">testing3</saml:AttributeValue>"
+"</saml:Attribute>"
+"<saml:Attribute Name=\"AuthMethod\">"
+"<saml:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">testing4</saml:AttributeValue>"
+"</saml:Attribute>"
+"</saml:AttributeStatement>"
+"</saml:Assertion>";
使用普通的字符串函数,子字符串,长度,我可以从字段中检索数据。但这是漫长而不方便的过程..
如何使用某些java库处理此响应并从字段中获取信息?
答案 0 :(得分:1)
您需要DOM Parser。
DOM解析器解析整个XML文档并将其加载到内存中;然后以“TREE”结构对其进行建模,以便于遍历或操作。
参见此处的示例:
https://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/
答案 1 :(得分:0)
我使用的是JDOM2。 这很容易操纵:https://github.com/hunterhacker/jdom/wiki/JDOM2-A-Primer