当前位置:   article > 正文

java后台解析获取到的xml格式字符串_xml字符串后端接收数据不对

xml字符串后端接收数据不对

当从页面上爬取数据时往往会得到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);     
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86

解析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;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

抽取自己想要的数据:

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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/712944
推荐阅读
相关标签
  

闽ICP备14008679号