赞
踩
当从页面上爬取数据时往往会得到xml格式的字符串返回值,此时解析该字符传获取自己需要的值往往是比较头疼的事,一下方式是在一个项目中用到的解析xml格式字符串的实例,记录下以便以后借鉴使用:
import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.Namespace; import org.jdom2.input.SAXBuilder; public static void main(String[] args){ FmJkfwServiceImpl doc = new FmJkfwServiceImpl(); String xml = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"+ "<Result xmlns=\"http://www.fiorano.com/fesb/activity/DBQueryOnInput2/Out\">"+ "<div id=\"gs\" name=\"gs\">"+ "<table class=\"myTable\">"+ "<tr>"+ "<td>社会信用代码(纳税人识别号):</td>"+ "<td id=\"nsr1\" colspan=\"2\">915xxxxxxJ</td>"+ "<td>纳税人名称:</td>"+ "<td colspan=\"2\">四川省xxxx有限公司</td>"+ "</tr>"+ "<tr class=\"sp\">"+ "<td>纳税人状态:</td>"+ "<td colspan=\"2\">正常</td>"+ "<td>课征主体登记类型:</td>"+ "<td colspan=\"2\">单位纳税人税务登记</td>"+ "</tr>"+ "<tr class=\"sp\">"+ "<td>注册地址:</td>"+ "<td colspan=\"2\">眉山市xxxx</td>"+ "<td>生产经营地址:</td>"+ "<td colspan=\"2\">眉山市xxxx</td>"+ "</tr>"+ "<tr>"+ "<td>法定代表人姓名:</td>"+ "<td>孙xx</td>"+ "<td>法定代表人身份证件类型:</td>"+ "<td>居民身份证</td>"+ "<td>法定代表人身份证号码:</td>"+ "<td>511xxxxxxx18</td>"+ "</tr>"+ "<tr class=\"sp\">"+ "<td>登记日期:</td>"+ "<td colspan=\"2\">2016-08-1</td>"+ "<td>主管税务机关:</td>"+ "<td colspan=\"2\">国家税务总局xxxxx税务局</td>"+ "</tr>"+ "<tr>"+ "<td>主管税务所(科、分局):</td>"+ "<td colspan=\"2\">国家税务总xxxx税务分局</td>"+ "<td>税收管理员:</td>"+ "<td colspan=\"2\">李xx</td>"+ "</tr>"+ "<tr class=\"sp\">"+ "<td>街道乡镇:</td>"+ "<td colspan=\"2\">xxx镇</td>"+ "<td>经营范围:</td>"+ "<td colspan=\"2\">销售:预包装食品、散装食品、乳制品(不含婴幼儿配方乳粉)、农副产品、化工产品(不含危险化学品)、管道配件、机电设备、五金交电、文化办公用品、金属材料。(依法须经批准的项目,经相关部门批准后方可开展经营活动)</td>"+ "</tr>"+ "<tr>"+ "<td>营改增纳税人类型:</td>"+ "<td></td>"+ "<td>会计制度(准则):</td>"+ "<td>小企业会计准则</td>"+ "<td>办证方式:</td>"+ "<td>国税独立办证</td>"+ "</tr>"+ "<tr class=\"sp\">"+ "<td>核算方式:</td>"+ "<td>独立核算自负盈亏</td>"+ "<td>国有控股类型:</td>"+ "<td></td>"+ "<td>国有投资比例:</td>"+ "<td>0</td>"+ "</tr>"+ "<tr>"+ "<td>自然人投资比例:</td>"+ "<td>0</td>"+ "<td>外资投资比例:</td>"+ "<td>0</td>"+ "<td>注册资本:</td>"+ "<td>1000000</td>"+ "</tr>"+ "</table>"+ "<div id=\"zfs\" name=\"zfs\">"+ "</div>"+ "</div>"+ "</Result>"; doc.xmlElements(xml); }
解析xml:
public Map<String,Object> xmlElements(String xmlDoc) { Map<String,Object> swdjxxMap = new HashMap<String,Object>(); //创建一个新的字符串 StringReader read = new StringReader(xmlDoc); //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入 InputSource source = new InputSource(read); //创建一个新的SAXBuilder SAXBuilder sb = new SAXBuilder(); try { //通过输入源构造一个Document Document doc = sb.build(source); //取的根元素 Element root = doc.getRootElement(); //System.out.println(root.getName());//输出根元素的名称(测试) //得到根元素所有子元素的集合 List jiedian = root.getChildren(); //获得XML中的命名空间(XML中未定义可不写) Namespace ns = root.getNamespace(); Element et = null; List<String> swDjxxList=new ArrayList<String>(); for(int i=0;i<jiedian.size();i++){ et = (Element) jiedian.get(i);//循环依次得到子元素 List zjiedian = et.getChildren(); for(int j=0;j<zjiedian.size();j++){ Element xet = (Element) zjiedian.get(j); List zjiediandian2 = xet.getChildren(); for(int m=0;m<zjiediandian2.size();m++){ Element xet2 = (Element) zjiediandian2.get(m); List zjiediandian3 = xet2.getChildren(); for(int n=0;n<zjiediandian3.size();n++){ Element xet3 = (Element) zjiediandian3.get(n); String tempStr=xet3.getContent().toString(); tempStr=tempStr.replace("[", ""); tempStr=tempStr.replace("]", ""); tempStr=tempStr.replace("Text: ", ""); swDjxxList.add(tempStr); System.out.println( "222===="+tempStr); } } } } if(null!=swDjxxList&&swDjxxList.size()>0){ swdjxxMap= makeData(swDjxxList);//提取数据 }else{ } } catch (JDOMException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } return swdjxxMap; }
抽取自己想要的数据:
public Map<String,Object> makeData(List<String> listStr) { Map<String,Object> swdjxxMap = new HashMap<String,Object>(); for(int i=0;i<listStr.size();i++){ if(i%2==0){ String str=listStr.get(i); switch(str){ case "社会信用代码(纳税人识别号):" : swdjxxMap.put("shxydm", listStr.get(i+1)); break; case "行业大类:" : swdjxxMap.put("sshy", listStr.get(i+1)); break; case "登记注册类型:" : swdjxxMap.put("djzclx", listStr.get(i+1)); break; case "注册资本:" : swdjxxMap.put("zczb", listStr.get(i+1)); break; case "注册地址:" : swdjxxMap.put("zcdz", listStr.get(i+1)); break; case "生产经营地址:" : swdjxxMap.put("scjydz", listStr.get(i+1)); break; case "经营范围:" : swdjxxMap.put("jyfw", listStr.get(i+1)); break; case "登记日期:" : swdjxxMap.put("cxsj", makeDate(listStr.get(i+1)));//跟当前时间求差算出时间 待处理 break; case "法定代表人姓名:" : swdjxxMap.put("fddbrxm", listStr.get(i+1)); break; case "法定代表人移动电话:" : swdjxxMap.put("fddbryddh", listStr.get(i+1)); break; case "办税人姓名:" : swdjxxMap.put("bsrxm", listStr.get(i+1)); break; case "办税人移动电话:" : swdjxxMap.put("bsryddh", listStr.get(i+1)); break; case "财务负责人姓名:" : swdjxxMap.put("cwfzrxm", listStr.get(i+1)); break; case "财务负责人移动电话:" : swdjxxMap.put("cwfzryddh", listStr.get(i+1)); break; default : //可选 //语句 } } } return swdjxxMap; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。