0
点赞
收藏
分享

微信扫一扫

java xml转json

yundejia 2024-12-04 阅读 20
  1. 根据文件地址对xml文件转json

public static String readFile(String path) throws Exception {
		File file=new File(path);
		FileInputStream fis = new FileInputStream(file);
		FileChannel fc = fis.getChannel();
		ByteBuffer bb = ByteBuffer.allocate(new Long(file.length()).intValue());
		//fc向buffer中读入数据
		fc.read(bb);
		bb.flip();
		String str=new String(bb.array(),"UTF8");
		fc.close();
		fis.close();
		return str;
	}

  1. xml转json

public static void dom4j2Json(Element element,JSONObject json){
		//如果是属性
		for(Object o:element.attributes()){
			Attribute attr=(Attribute)o;
			if(!isEmpty(attr.getValue())){
				json.put("@"+attr.getName(), attr.getValue());
			}
		}
		List<Element> chdEl=element.elements();
		if(chdEl.isEmpty()&&!isEmpty(element.getText())){//如果没有子元素,只有一个值
			json.put(element.getName(), element.getText());
		}
		for(Element e:chdEl){//有子元素
			if(!e.elements().isEmpty()){//子元素也有子元素
				JSONObject chdjson=new JSONObject();
				dom4j2Json(e,chdjson);
				Object o=json.get(e.getName());
				if(o!=null){
					JSONArray jsona=null;
					if(o instanceof JSONObject){//如果此元素已存在,则转为jsonArray
						JSONObject jsono=(JSONObject)o;
						json.remove(e.getName());
						jsona=new JSONArray();
						jsona.add(jsono);
						jsona.add(chdjson);
					}
					if(o instanceof JSONArray){
						jsona=(JSONArray)o;
						jsona.add(chdjson);
					}
					json.put(e.getName(), jsona);
				}else{
					if(!chdjson.isEmpty()){
						json.put(e.getName(), chdjson);
					}
				}
			}else{//子元素没有子元素
				for(Object o:element.attributes()){
					Attribute attr=(Attribute)o;
					if(!isEmpty(attr.getValue())){
						json.put("@"+attr.getName(), attr.getValue());
					}
				}
				if(!e.getText().isEmpty()){
					json.put(e.getName(), e.getText());
				}
			}
		}
	}

//判空
public static boolean isEmpty(String str) {
		if (str == null || str.trim().isEmpty() || "null".equals(str)) {
			return true;
		}
		return false;
	}


举报

相关推荐

0 条评论