java解析xml格式字符串

public class ParsingXML {

	public static void main(String[] args) {
		String in = "<?xml version=\"1.0\" ?><Books><Book><Name = \"The C++ Programming Language\" Author=\"Bjarne Stroustrup\" /></Book><Book><Name = \"Effective C++\" Author = \"Scott Meyers\" /></Book></Books>"; 
		ParsingXML px = new ParsingXML();
		String xml = px.ParsingXML(in);
		System.out.println(xml);

	}
	
	private String ParsingXML(String in){
		String xml = "";
		in = in.substring(in.indexOf("?>")+2);
		while(in.length() > 0){//多个大类
			String leibq = getBQ(in);
			xml += leibq.substring(0, leibq.length()-1)+"\n";
			int bqe = in.indexOf("</"+leibq);
			int bqe2 = bqe + ("</"+leibq).length();
			String lei = in.substring(leibq.length()+1, bqe);
			
			String stbq = getBQ(lei);
			int chbqs = lei.indexOf(">")+1;
			lei = lei.substring(chbqs,lei.length()-("</"+stbq).length());
			int n=1;
			if(lei.indexOf("</"+stbq+"<"+stbq) > 0){//有多个实体
				String[] shitis = lei.split("</"+stbq+"<"+stbq);
				
				for(String st : shitis){
					st = st.substring(1, st.length()-2);
					xml += "  "+stbq.substring(0, stbq.length()-1)+n+"\n";
					while(st.indexOf("\"") > 0){
					    int index = st.indexOf("\"");
					    String sxorval = st.substring(0,index);
					    if(sxorval.indexOf("=") > 0){
					    	xml += "\t"+sxorval.replace("=", "").trim() + " = "; 
					    }
					    else{
					    	xml += sxorval+"\n";
					    }
					    st = st.substring(index+1);
					}
					n++;
					
				}
					
			}else{
				String st = lei;
				st = st.substring(1, st.length()-2);
				xml += stbq.substring(0, stbq.length()-1)+n+"\r\n\t";
				while(st.indexOf("\"") > 0){
				    int index = st.indexOf("\"");
				    String sxorval = st.substring(0,index);
				    if(sxorval.indexOf("=") > 0){
				    	xml += "  "+sxorval.replace("=", "").trim() + " = "; 
				    }
				    else{
				    	xml += sxorval;
				    }
				    st = st.substring(index+1);
				}
			}
			in = in.substring(bqe2);
		}
		return xml;
	}
	
	private String getBQ(String chxml){
		return chxml.substring(1,chxml.indexOf(">")+1);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值