demo4j生成字符串xml和解析xml

这篇博客展示了如何使用Java解析和生成XML字符串。通过调用client.invoke方法获取XML字符串,然后使用DocumentHelper.parseText进行解析,遍历XML元素并提取关键信息。示例中,XML字符串包含数据报告和错误记录,解析后将错误记录的索引添加到列表中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 //拼接XML
        Document document = DocumentHelper.createDocument();
Element root = document.addElement("root");
Element data =  root.addElement("data");
data.addAttribute("class", "map");
Element username =  data.addElement("username").addText(loginid);
Element password  =  data.addElement("password").addText(password_gd);
Element list =  data.addElement("list").addAttribute("class", "list");
for (int i = 0; i <xzcflist.size(); i++) {
Element obj  =  list.addElement("obj");
obj.addElement("cfwsh").addText(xzcflist.get(i).getCfWsh());
obj.addElement("cfcfmc").addText(xzcflist.get(i).getCfCfmc());
 
}
//System.out.println(document.asXML());

Object[] tokens = client.invoke("xzcfDataReport", new Object[] {document.asXML()});

//解析xml字符串
public  List<Integer> jxXml(Object tokens)
{
List<Integer> sblist=new ArrayList<Integer>();
Document doc = null;
try {
doc = DocumentHelper.parseText(tokens.toString());
Element root = doc.getRootElement();// 指向根节点   
 Element normal = root.element("data");
 Element failsRecord= normal.element("failsRecord");// 所有的Item节点    
 List<Element> lstData=failsRecord.elements("item");
 for (int i = 0; i < lstData.size(); i++) {    
              Element etime = (Element) lstData.get(i);    
              System.out.println(Integer.parseInt(etime.attribute("index").getText())); 
              sblist.add(Integer.parseInt(etime.attribute("index").getText()));
          }  
} catch (DocumentException e) {
e.printStackTrace();
}
return sblist;
}

生成的xml


<?xml version="1.0" encoding="UTF-8"?>

<root>

<data class=”map”>

<username>test</username>

<password >0c5233c74cbdf474e065257867e4d733</password>

<list class=”list”>

               <obj>

                    <xkwsh>行政许可决定书文号</xkwsh>

                    <xkxmmc>项目名称</xkxmmc>

                    <xksplb>审批类别</xksplb>

                    <xknr>许可内容</xknr>

                    <xkxdr>行政相对人名称</xkxdr>

                    <xkxdrshxym>统一社会信用代码</xkxdrshxym>

                    <xkxdrzdm>组织机构代码</xkxdrzdm>

                    <xkxdrgsdj>工商登记码</xkxdrgsdj>

                    <xkxdrswdj>税务登记号</xkxdrswdj>

                    <xkxdrsfz>居民身份证号</xkxdrsfz>

                    <xkfr>法定代表人姓名</xkfr>

                    <xkjdrq>许可决定日期</xkjdrq>

                    <xkjzq>许可截止期</xkjzq>

                    <xkxzjg>许可机关</xkxzjg>

                    <xkzt>当前状态</xkzt>

                    <xkdfbm>地方编码</xkdfbm>

                    <sjc>数据更新时间戳</sjc>

                    <bz>备注</bz>

</obj>

<obj></obj>

<obj></obj>

……

</list>

</data>

</root>




解析的xml

<?xml version="1.0" encoding="UTF-8"?>

<root>

<data>

    <code> 44030</code>

    <desc>数据部分上报成功,还有部分错误数据</desc>

<failcount>1</failcount>

<insertcount>0</insertcount>

    <updatecount>1</updatecount>

<text>

本次上报2条数据,新增0条,更新1条,失败1

2016-6-3 17:04:08:记录第2条,未导入成功(“行政许可决定书文号”您填写的数据不能为空,如前置许可无决定文书号,此处填文字“空”;为了提高数据的质量,请按照文档要求的数据格式上传数据,谢谢!)

</text>

<failsRecord>

    <item index=’2’ reason=’“行政许可决定书文号”您填写的数据不能为空,如前置许可无决定文书号,此处填文字“空”;’ />

</failsRecord>

</data>

</root>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值