soap格式的xml解析

sanfan0819 2013-06-07 01:58:35
<?xml version="1.0"?>
<soapenv:Envelope xmlns:rxas="http://schemas.datacontract.org/2004/07/RxAssystLib.Contracts.Data" xmlns:tem="http://tempuri.org/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header/>
<soapenv:Body>
<tem:User>
<rxas:Password>Blackbox</rxas:Password>
<rxas:UserName>jm</rxas:UserName>
</tem:User>
</soapenv:Body>
</soapenv:Envelope>

这种格式的xml如何在后台解析得到username 和 password的值?使用dom4j 取不到值
...全文
267 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
木薯超人 2013-06-08
  • 打赏
  • 举报
回复
我尝试解析了一下

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.List;

public class test{
	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws DocumentException {
		SAXReader saxReader = new SAXReader();
		String path = "D:/dom.xml";
		Document doc = saxReader.read(new File(path));
		Element root = doc.getRootElement();
		Element element = root.element("Body");
		for(Element Body : (List<Element>)element.elements("User")) {
			for(Element rusult_element : (List<Element>)Body.elements("Password")) {
				if(rusult_element.isTextOnly()) {
					System.out.println(" Password=" + rusult_element.getText());
				}
			}
			for(Element rusult_element : (List<Element>)Body.elements("UserName")) {
				if(rusult_element.isTextOnly()) {
					System.out.println(" UserName=" + rusult_element.getText());
				}
			}
		}
	}
}
解析SOAP时候<rxas:UserName>jm</rxas:UserName>不行 要用UserName这样子的
女雅乱 2013-06-07
  • 打赏
  • 举报
回复
很标准的一个envelope xml
sanfan0819 2013-06-07
  • 打赏
  • 举报
回复
使用dom4j可以取到值, 是我有个地方写错了。 map=new HashMap(); Document xmldoc=DocumentHelper.parseText(dataxml); Element root=xmldoc.getRootElement(); List<Element> list=root.elements(); for(int i=0; i<list.size();i++) { Element node=(Element)list.get(i); List list2=node.elements(); for(int j=0; j<list2.size();j++) { Element element = (Element) list2.get(j); map.put(element.getName(), element.getText()); for( Iterator iterInner = element.elementIterator(); iterInner.hasNext(); ) { Element elementInner = (Element) iterInner.next(); map.put(elementInner.getName(), elementInner.getText()); System.out.println(elementInner.getName()); } } }

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧