java dom4j生成xml有前缀节点的 xml,节点类似soapenv:Envelope模样

后使用快捷导航没有帐号?
查看: 1969|回复: 4
UID帖子阅读权限20精华贴数技术排名160323 专家积分0 社区排名2638139 技术积分10 社区积分0 注册时间
精华贴数专家积分0 技术积分10 社区积分0 注册时间
论坛徽章:0
XML请求报文格式约定
&soap:Envelope xmlns:xsi=&& xmlns:xsd=&& xmlns:soap=&&
& && &&&&soap:head&
& & &username&sssss&/username&
&password&fffff&/password&
&应用服务器IP&&/应用服务器IP&
&/soap:head&
&soap:Body&
&&&param_input&
&/param_input&
&/soap:Body&
&/soap:Envelope&
对:username、password、应用服务器IP 的值写两个方法 对值进行重新设置,和读出,请大神们指教呀,我是刚来论坛没什么分,非常急,谢谢工作需要
UID638145帖子阅读权限20精华贴数技术排名1721 专家积分15 社区排名633 技术积分1647 社区积分4229 注册时间
色色的三儿
精华贴数专家积分15 技术积分1647 社区积分4229 注册时间
认证徽章论坛徽章:64
是不是可以用dom4j?
关注.net!关注我们家的猪!
UID帖子阅读权限20精华贴数技术排名160323 专家积分0 社区排名2638139 技术积分10 社区积分0 注册时间
精华贴数专家积分0 技术积分10 社区积分0 注册时间
论坛徽章:0
xiaosanaiq 发表于
是不是可以用dom4j?
我用了dom4j的解析,不行哦,里面涉及到一些namesapce的东东 解析不了用一些方法,网上说是用xfire,我这个没接触过
UID638145帖子阅读权限20精华贴数技术排名1721 专家积分15 社区排名633 技术积分1647 社区积分4229 注册时间
色色的三儿
精华贴数专家积分15 技术积分1647 社区积分4229 注册时间
认证徽章论坛徽章:64
xfire已经木了。。用axis2。。你这貌似是webservices的东西啊。。可以直接序列到对象里
关注.net!关注我们家的猪!
UID帖子阅读权限20精华贴数技术排名160323 专家积分0 社区排名2638139 技术积分10 社区积分0 注册时间
精华贴数专家积分0 技术积分10 社区积分0 注册时间
论坛徽章:0
xiaosanaiq 发表于
xfire已经木了。。用axis2。。你这貌似是webservices的东西啊。。可以直接序列到对象里
axis2&&嗯 好的我去网上找找资料看看
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号评论-1162&
trackbacks-0
Axis中操作Header的信息是通过Handler来完成的,在读取Header的信息的时候,可以完成Header的操作的Handler有JWSHandler、SOAPMonitorHandler、JAXRPCHandler。JWSHandler是完成jws发布模式的WebService的Header的读取操作,
SOAPMonitorHandler是完成SOAPMonitor模式的,JAXRPCHandler是java rpc模式的。
下面将会用JAXRPCHandler读取客户端的Header信息,然后用BasicHandler将客户端请求的Header写入客户端的响应的Header中。
1、 首先编写一个方法,这个方法什么也不做。就是在这个方法请求和响应的时候分别完成读取Header的信息和写入响应的Header内容。代码如下:&
package com.hoo./** * &b&function:&/b&读取客户端头部Header信息的WebService * @author hoojo * @createDate Dec 19, :25 AM * @file ReadHeaderService.java * @package com.hoo.service * @project AxisWebService * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@ * @version 1.0 */public class OperaterHeaderService {
* &b&function:&/b&提供一个空方法,在调用这个方法的时候
* 触发ReadHeaderHandler读取Header的信息
* @author hoojo
* @createDate Dec 19, :54 AM
public void readHeader() {
2、 客户端的Header中的内容是下面这样的xml内容
&ns1:Header soapenv:mustUnderstand="0" xmlns:ns1="soap"&&ServiceName&ReadHeaderService&/ServiceName&&CreateDate&T06:22:59.931Z&/CreateDate&&ns2:Version xmlns:ns2="service"&1.0&/ns2:Version&&author&
&name&axis&/name&
&age&14&/age&&/author&&copyRight&
&year&2010&/year&
&number&&/number&&/copyRight&&Tel&&/Tel&&/ns1:Header&
下面将用客户端代码将上面的xml元素添加的Header中,代码如下:
/** 添加请求的header */
//父节点,根节点
SOAPHeaderElement el = new SOAPHeaderElement(new QName("soap", "Header"));
//文本节点
MessageElement msgEl = new MessageElement(new QName("ServiceName"), "ReadHeaderService");
el.addChild(msgEl);
//文本节点
el.addChild(new MessageElement(new QName("CreateDate"), new Date()));
el.addChild(new MessageElement(new QName("service", "Version"), "1.0"));
msgEl = new MessageElement(new QName("author"));
msgEl.addChild(new MessageElement(new QName("name"), "axis"));
msgEl.addChild(new MessageElement(new QName("age"), "14"));
el.addChild(msgEl);
msgEl = new MessageElement(new QName("copyRight"));
msgEl.addChild(new MessageElement(new QName("year"), "2010"));
msgEl.addChild(new MessageElement(new QName("number"), ""));
el.addChild(msgEl);
el.addChild(new MessageElement(new QName("Tel"), ""));
System.out.println(el.toString());
//设置请求的header
call.addHeader(el);
上面的就完成了xml中的内容,并且添加到请求的Header中。
3、 根据上面的Header的内容,我们现在编写一个Handler用来读取客户端请求信息中的Header的内容,这个Handler需要继承JAXRPCHandler。代码如下:
package com.hoo.service.import java.util.Iimport java.util.Limport javax.xml.soap.SOAPHimport org.apache.axis.AxisFimport org.apache.axis.MessageCimport org.apache.axis.handlers.JAXRPCHimport org.apache.axis.message.MessageEimport org.apache.axis.message.NodeIimport org.apache.axis.message.SOAPHeaderEimport org.apache.axis.message.T/** * &b&function:&/b&读取Header信息的Handler * @author hoojo * @createDate Dec 19, :56 AM * @file ReadHeaderHandler.java * @package com.hoo.service.handler * @project AxisWebService * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@ * @version 1.0 */public class ReadHeaderHandler extends JAXRPCHandler {
private static final long serialVersionUID = -633248L;
@SuppressWarnings("unchecked")
public void invoke(MessageContext msgContext) throws AxisFault {
SOAPHeader header = msgContext.getCurrentMessage().getSOAPHeader();
Iterator&SOAPHeaderElement& iter = header.getChildElements();
while (iter.hasNext()) {
SOAPHeaderElement el = iter.next();
//继续子元素
List&NodeImpl& list = el.getChildren();
for (NodeImpl node : list) {
if (node.hasChildNodes()) {
MessageElement msg = (MessageElement)
if (msg.hasChildNodes()) {
List&NodeImpl& msgNode = msg.getChildren();
for (NodeImpl n : msgNode) {
if (!n.hasChildNodes()) {
Text text = (Text)
System.out.println("父节点:" + el.getName() + ", 节点:" + msg.getName() + ", 值:" + text.getValue());
MessageElement child = (MessageElement)
if (child.hasChildNodes()) {
List&NodeImpl& childNode = child.getChildren();
for (NodeImpl n2 : childNode) {
if (!n2.hasChildNodes()) {
Text text = (Text) n2;
System.out.print("父父节点:" + el.getName() + ", 父节点:" + msg.getName());
System.out.println(", 节点:" + child.getName() + "##" + child.getNodeName()
", 值:" + text.getValue() + "##" + child.getValue());
} catch (Exception e) {
e.printStackTrace();
上面读取Header内容的代码有点小长,不过比较简单。就是用循环遍历Header的内容,Header的内容是一个xml的文档。所以用循环一步步向里面遍历,不过感觉写个递归会更简单。
4、 下面将编写一个Handler来向客户端的Response中写入Header内容,写入的Header的内容就是客户端请求的Header内容。代码如下:
package com.hoo.service.import java.util.Iimport javax.xml.soap.SOAPEimport org.apache.axis.AxisFimport org.apache.axis.Mimport org.apache.axis.MessageCimport org.apache.axis.handlers.BasicHimport org.apache.axis.message.SOAPEimport org.apache.axis.message.SOAPHimport org.apache.axis.message.SOAPHeaderE/** * &b&function:&/b&用handler向客户端写入Response 的Header信息 * @author hoojo * @createDate Dec 19, :35 PM * @file WriteHeaderHandler.java * @package com.hoo.service.handler * @project AxisWebService * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@ * @version 1.0 */public class WriteHeaderHandler extends BasicHandler {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
public void invoke(MessageContext msgContext) throws AxisFault {
Message msg = msgContext.getCurrentMessage();
SOAPEnvelope se = msg.getSOAPEnvelope();
//request Header的部分头信息
Message reqMsg = msgContext.getRequestMessage();
SOAPEnvelope reqSe = reqMsg.getSOAPEnvelope();
SOAPHeader reqHeader = null;
reqHeader = (SOAPHeader) reqSe.getHeader();
} catch (SOAPException e) {
e.printStackTrace();
//response Header部分头信息
Message respMsg = msgContext.getResponseMessage();
SOAPEnvelope respSe = respMsg.getSOAPEnvelope();
SOAPHeader respHeader = null;
respHeader = (SOAPHeader) respSe.getHeader();
} catch (SOAPException e) {
e.printStackTrace();
Iterator&SOAPHeaderElement& iter = reqHeader.examineAllHeaderElements();
while (iter.hasNext()) {
SOAPHeaderElement she = iter.next();
//添加请求信息到响应的Header中
respHeader.addChildElement(she);
} catch (SOAPException e) {
e.printStackTrace();
System.out.println(she.getNodeName());
//设置响应信息
msgContext.setResponseMessage(respMsg);
System.out.println("header Info:" + se.getHeader());
} catch (SOAPException e) {
e.printStackTrace();
上面的代码是取出respHeader = (SOAPHeader) respSe.getHeader();
然后循环遍历Header的元素写入到respHeader.addChildElement(she);
5、 好了,上面已经写好了WebService的方法,以及请求时读取Header内容的Handler和在响应时写入Header内容的Handler。下面开始写wsdd发布当前WebService。
&?xml version="1.0" encoding="UTF-8"?&&deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&
&handler name="ReadHeaderHandler" type="java:com.hoo.service.handler.ReadHeaderHandler"/&
&handler name="WriteHeaderHandler" type="java:com.hoo.service.handler.WriteHeaderHandler"/&
&service name="OperaterHeader" provider="java:RPC"&
&requestFlow&
&handler type="ReadHeaderHandler"/&
&/requestFlow&
&parameter name="className" value="com.hoo.service.OperaterHeaderService" /&
&parameter name="allowedMethods" value="*" /&
&parameter name="scope" value="request" /&
&responseFlow&
&handler type="WriteHeaderHandler"/&
&/responseFlow&
&/service&&/deployment&
还是用doc命令发布当前WebService,命令如下:
C:\SoftWare\tomcat-5.0.28\tomcat-5.0.28\webapps\AxisWebService\WEB-INF&java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/AxisWebService/services/AdminService deployHeader.wsdd
发布完成后,你会看的
Processing file deployHeader.wsdd
&Admin&Done processing&/Admin&
的字样就表示发布成功了,然后在浏览器地址栏输入:
你就可以看到OperaterHandler这个WebService了
6、 OperaterHandler这个WebService成功发布,现在就是要编写客户端代码调用这个WebService,客户端代码比较简单,完整代码如下:
package com.hoo.import java.rmi.RemoteEimport java.util.Dimport javax.xml.namespace.QNimport javax.xml.rpc.ServiceEimport javax.xml.soap.SOAPEimport org.apache.axis.Mimport org.apache.axis.client.Cimport org.apache.axis.client.Simport org.apache.axis.message.MessageEimport org.apache.axis.message.SOAPEimport org.apache.axis.message.SOAPHeaderE/** * &b&function:&/b&Header操作WebService客户端 * @author hoojo * @createDate Dec 19, :51 PM * @file OperaterHeaderClient.java * @package com.hoo.client * @project AxisWebService * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@ * @version 1.0 */public class OperaterHeaderClient {
public static void main(String[] args) throws SOAPException, ServiceException, RemoteException {
String url = "http://localhost:8080/AxisWebService/services/OperaterHeader";
//创建服务
Service service = new Service();
//创建调用句柄
Call call = (Call) service.createCall();
//设置请求地址
call.setTargetEndpointAddress(url);
call.setOperationName(new QName("readHeader"));
/** 添加请求的header */
//父节点,根节点
SOAPHeaderElement el = new SOAPHeaderElement(new QName("soap", "Header"));
//文本节点
MessageElement msgEl = new MessageElement(new QName("ServiceName"), "ReadHeaderService");
el.addChild(msgEl);
//文本节点
el.addChild(new MessageElement(new QName("CreateDate"), new Date()));
el.addChild(new MessageElement(new QName("service", "Version"), "1.0"));
msgEl = new MessageElement(new QName("author"));
msgEl.addChild(new MessageElement(new QName("name"), "axis"));
msgEl.addChild(new MessageElement(new QName("age"), "14"));
el.addChild(msgEl);
msgEl = new MessageElement(new QName("copyRight"));
msgEl.addChild(new MessageElement(new QName("year"), "2010"));
msgEl.addChild(new MessageElement(new QName("number"), ""));
el.addChild(msgEl);
el.addChild(new MessageElement(new QName("Tel"), ""));
System.out.println(el.toString());
//设置请求的header
call.addHeader(el);
* 注意:在请求readHeader方法的时候,也就是invoke执行的时候。会调用ReadHeaderHandler这个handler
* 在请求完成后,准备返回值的时候或是说函数在运行完成了后。就会触发WriteHeaderHandler
call.invoke(new Object[] {});
/** 响应的header */
Message msg = call.getResponseMessage();
SOAPEnvelope se = msg.getSOAPEnvelope();
System.out.println("responseMessage:" + se.getHeader());
call.getResponseMessage();可以得到服务器响应的Header的信息
运行后你可以看到客户端控制台会输出:
&ns1:Header soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:ns1="soap" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&&ServiceName xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&ReadHeaderService&/ServiceName&&CreateDate xsi:type="xsd:dateTime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&T06:22:59.931Z&/CreateDate&&ns2:Version xsi:type="xsd:string" xmlns:ns2="service" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&1.0&/ns2:Version&&author&&name xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&axis&/name&&age xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&14&/age&&/author&&copyRight&&year xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&2010&/year&&number xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&&/number&&/copyRight&&Tel xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&&/Tel&&/ns1:Header&
responseMessage:&soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&&ns1:Header soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:ns1="soap"&&ServiceName xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&ReadHeaderService&/ServiceName&&CreateDate xsi:type="xsd:dateTime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&T06:22:59.931Z&/CreateDate&&ns2:Version xsi:type="soapenc:string" xmlns:ns2="service" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&1.0&/ns2:Version&&author&&name xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&axis&/name&&age xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&14&/age&&/author&&copyRight&&year xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&2010&/year&&number xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&&/number&&/copyRight&&Tel xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&&/Tel&&/ns1:Header&&/soapenv:Header&
responseMessage前面的内容是客户端将会写入到Header中的xml内容,而responseMessage后面的内容就是响应的Header的内容,这段内容是WriteHeaderHandler写入到ResponseMessage中的。
再看看服务器端控制台的内容:
父节点:Header, 节点:ServiceName, 值:ReadHeaderService
父节点:Header, 节点:CreateDate, 值:T06:22:59.931Z
父节点:Header, 节点:Version, 值:1.0
父父节点:Header, 父节点:author, 节点:name##name, 值:axis##axis
父父节点:Header, 父节点:author, 节点:age##age, 值:14##14
父父节点:Header, 父节点:copyRight, 节点:year##year, 值:
父父节点:Header, 父节点:copyRight, 节点:number##number, 值:##
父节点:Header, 节点:Tel, 值:
ns1:Header
header Info:&soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&&ns1:Header soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:ns1="soap"&&ServiceName xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&ReadHeaderService&/ServiceName&&CreateDate xsi:type="xsd:dateTime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&T06:22:59.931Z&/CreateDate&&ns2:Version xsi:type="soapenc:string" xmlns:ns2="service" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&1.0&/ns2:Version&&author&&name xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&axis&/name&&age xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&14&/age&&/author&&copyRight&&year xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&2010&/year&&number xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&&/number&&/copyRight&&Tel xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&&/Tel&&/ns1:Header&&/soapenv:Header&
上面的文本内容是ReadHeaderHandler读取客户端的Header的内容和我们定制的xml的内容是一致的。而后面的xml能入是WriteHeaderHandler中输出的内容。
阅读(...) 评论()遍历所有xml节点 - For The Dream - ITeye技术网站
博客分类:
package com.huawei.
* xml节点数据结构
public class Leaf
// 节点属性
// 节点PATH
public Leaf(String xattribute, String xpath, String value)
this.xattribute =
this.xpath =
this.value =
public String getXpath()
public void setXpath(String xpath)
this.xpath =
public String getValue()
public void setValue(String value)
this.value =
public String getXattribute()
public void setXattribute(String xattribute)
this.xattribute =
===================
package com.huawei.
import java.util.ArrayL
import java.util.I
import java.util.L
import org.dom4j.D
import org.dom4j.DocumentE
import org.dom4j.E
import org.dom4j.io.SAXR
import org.dom4j.tree.DefaultA
import com.huawei.entity.L
public class ParseXML
//存储xml元素信息的容器
private static ArrayList&Leaf& elemList = new ArrayList&Leaf&();
public static void main(String args[])
throws DocumentException
ParseXML test = new ParseXML();
String path = "D:/4Tools/crm.xml";
// 读取XML文件
SAXReader reader = new SAXReader();
Document doc = reader.read(path);
// 获取XML根元素
Element root = doc.getRootElement();
test.getElementList(root);
String result = test.getListString();
//去掉消息头
result = result.replace("/soapenv:Envelope/soapenv:Header", "");
//去掉前缀消息体
result = result.replace("/soapenv:Envelope/soapenv:Body/", "");
result = result.replace("/","." );
result = result.replace("", "");
WriteReslut wr = new WriteReslut();
wr.outputResult("D:/4Tools/", "result.txt", result);
System.out.println("-----------解析结果------------\n" + result);
* 获取节点所有属性值
@SuppressWarnings("unchecked")
public String getNoteAttribute(Element element)
String xattribute = "";
DefaultAttribute e =
List list = element.attributes();
for (int i = 0; i & list.size(); i++)
e = (DefaultAttribute)list.get(i);
//System.out.println("name = " + e.getName() + ", value = " + e.getText());
xattribute += " [name = " + e.getName() + ", value = " + e.getText() + "]";
* 递归遍历方法
* &功能详细描述&
* @param element
* @see [类、类#方法、类#成员]
@SuppressWarnings("unchecked")
public void getElementList(Element element)
List elements = element.elements();
// 没有子元素
if (elements.isEmpty())
String xpath = element.getPath();
String value = element.getTextTrim();
elemList.add(new Leaf(getNoteAttribute(element), xpath, value));
// 有子元素
Iterator it = elements.iterator();
while (it.hasNext())
Element elem = (Element)it.next();
// 递归遍历
getElementList(elem);
@SuppressWarnings("unchecked")
public String getListString()
StringBuffer sb = new StringBuffer();
for (Iterator it = elemList.iterator(); it.hasNext();)
Leaf leaf = (Leaf)it.next();
sb.append(leaf.getXpath());
if (!"".equals(leaf.getXattribute()))
sb.append(", Attribute: ").append(leaf.getXattribute());
sb.append("\n");
return sb.toString();
package com.huawei.
import java.io.BufferedW
import java.io.F
import java.io.FileW
import java.io.IOE
public class WriteReslut
public void outputResult(String path,String name,String content)
File file = new File(path + name);
bw = new BufferedWriter(new FileWriter(file));
bw.write(content);
bw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
package com.huawei.
import java.awt.FlowL
import java.awt.event.ActionE
import java.awt.event.ActionL
import java.io.F
import javax.swing.JB
import javax.swing.JFileC
import javax.swing.JF
import javax.swing.JL
import javax.swing.JOptionP
import javax.swing.JTextF
import org.dom4j.D
import org.dom4j.DocumentE
import org.dom4j.E
import org.dom4j.io.SAXR
public class GUI {
private String fileP
private File srcF
private JFrame jFrame =
private JButton choseButton =
private JButton computeButton =
private JTextField jtf =
private JLabel la =
private JFileChooser jfc =
private ButtonListener buttLis = new ButtonListener();
public void Frame() {
jFrame = new JFrame("分析报文节点");
jFrame.setLayout(new FlowLayout());
jtf = new JTextField(15);
choseButton = new JButton("选择");
computeButton = new JButton("分析节点");
la = new JLabel("请选择文件路径:");
jfc = new JFileChooser();
jfc.setCurrentDirectory(new File("D:\\"));
jfc.setDialogTitle("选择文件");
jfc.setDragEnabled(false);
//添加控件
jFrame.add(la);
jFrame.add(jtf);
jFrame.add(choseButton);
jFrame.add(computeButton);
choseButton.addActionListener(buttLis);
computeButton.addActionListener(buttLis);
jFrame.setBounds(250, 200, 600, 350);//frame初始显示位置
jFrame.setSize(400, 100);
jFrame.setVisible(true);
jFrame.setResizable(false);//将frame设置成不能改变大小
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
* main 函数
public static void main(String[] args) {
GUI gui = new GUI();
gui.Frame();
class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
if (event.getSource().equals(choseButton)) {
// 设置其只能选择文件
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
int state = jfc.showOpenDialog(null);
if (state == 1) {
srcFile = jfc.getSelectedFile();
jtf.setText(srcFile.getAbsolutePath());
filePath = srcFile.getPath();
if (filePath == null) {
JOptionPane.showMessageDialog(jFrame, "请先选择文件");
ParseXML test = new ParseXML();
// 读取XML文件
SAXReader reader = new SAXReader();
doc = reader.read(filePath);
// 获取XML根元素
Element root = doc.getRootElement();
test.getElementList(root);
String result = test.getListString();
//去掉消息头
result = result.replace(
"/soapenv:Envelope/soapenv:Header", "");
//去掉前缀消息体
result = result.replace(
"/soapenv:Envelope/soapenv:Body/", "");
result = result.replace("/", ".");
result = result.replace("", "");
WriteReslut wr = new WriteReslut();
wr.outputResult(
filePath.replace(srcFile.getName(), ""),
"分析结果.txt", result);
JOptionPane.showMessageDialog(jFrame, "分析完毕!");
} catch (DocumentException e)
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(jFrame, e);
浏览: 48095 次
来自: 南京
大家可以看看这个,里面有真正的实例:http://43.249 ...
适合初学者学习,蛮好…
我笑了............................ ...
大哥。能不能加个项目结构图。再加个运行结果图,你这样写我都不知 ...
求完整项目代码啊亲}

我要回帖

更多关于 dom4j解析有前缀的xml 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信