XML是一个SOAP, 内容如下:<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body><ACIC_MessageBrokerService xmlns="http://www.ACIC.MessageBrokerService.com/">
<ServiceID>0428000001</ServiceID>
<obj>
<anyType xsi:type="xsd:string">par1</anyType>
<anyType xsi:type="xsd:int">0</anyType>
<anyType xsi:type="xsd:boolean">true</anyType>
</obj></ACIC_MessageBrokerService>
</soap:Body>
</soap:Envelope>
请高手帮忙帮我取出 ServiceID 的值放进一个String变量, 和 obj 中的值, 放进一个Object[] 中, 万分感谢....
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body><ACIC_MessageBrokerService xmlns="http://www.ACIC.MessageBrokerService.com/">
<ServiceID>0428000001</ServiceID>
<obj>
<anyType xsi:type="xsd:string">par1</anyType>
<anyType xsi:type="xsd:int">0</anyType>
<anyType xsi:type="xsd:boolean">true</anyType>
</obj></ACIC_MessageBrokerService>
</soap:Body>
</soap:Envelope>
请高手帮忙帮我取出 ServiceID 的值放进一个String变量, 和 obj 中的值, 放进一个Object[] 中, 万分感谢....
百度搜了一下。。一大堆啊。上面是我看了一下很详细
String str = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"
+ "<soap:Body><ACIC_MessageBrokerService xmlns=\"http://www.ACIC.MessageBrokerService.com/\">"
+ "<ServiceID>0428000001</ServiceID>" + "<obj>" + "<anyType xsi:type=\"xsd:string\">par1</anyType>"
+ "<anyType xsi:type=\"xsd:int\">0</anyType>" + "<anyType xsi:type=\"xsd:boolean\">true</anyType>"
+ "</obj></ACIC_MessageBrokerService>" + "</soap:Body>" + "</soap:Envelope>";
Document doc = DocumentHelper.parseText(str);
Element root = doc.getRootElement();
System.out.println(root);
Element node = root.element("Body").element("ACIC_MessageBrokerService").element("ServiceID");
System.out.println(node.getName() + ": " + node.getText());
太感谢了, ServiceID的值已经获取到了, 但是我在获取obj数组的时候, 又出问题了, 请再帮忙看看, 我的代码写的是
Element node = root.element("Body").element("ACIC_MessageBrokerService").element("obj");
执行时就抛异常了.
Element obj = root.element("Body").element("ACIC_MessageBrokerService").element("obj");
List<Element> types = obj.elements("anyType");
for (Element elem : types) {
System.out.println(elem.getName() + ": " + elem.getText());
}
XPath也行: List<Element> lstType = doc.selectNodes("//*[local-name()='anyType' and namespace-uri()='http://www.ACIC.MessageBrokerService.com/']");
for (Element elem : lstType) {
System.out.println(elem.getName() + ": " + elem.getText());
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class ReadXML
{ public static void main(String[] args)
{
SAXReader reader = new SAXReader();
Document doc = null;
try
{
doc = reader.read(new File("D:" + File.separator + "test.xml"));
}
catch (Exception ex)
{
ex.printStackTrace();
}
int index = 0;
String serviceid = null;
List<Element> allObj = new ArrayList<Element>();
Object[] o = new Object[3];
Element root = doc.getRootElement();
Iterator iter = root.elementIterator();
while (iter.hasNext())
{
Element e = (Element) iter.next();
Iterator bodyIter = e.elementIterator();
while (bodyIter.hasNext())
{
Element child = (Element) bodyIter.next();
serviceid = child.elementText("ServiceID");
Iterator acicIter = child.elementIterator();
while (acicIter.hasNext())
{
Element service = (Element) acicIter.next();
allObj = service.elements();
} } }
System.out.println(serviceid); Iterator<Element> obj = allObj.iterator();
while (obj.hasNext())
{
Element e = (Element) obj.next();
o[index++] = e.getText();
}
for (Object oj : o)
{
System.out.println(oj);
}
}}