XML文件读取

               之前写过一个读取xml文件的文章,是通过w3c.dom.Document,为此还特意比较了 *.properties*.xml的区别。也是因为当时的抽象,给现在省去了好多麻烦,因为小编一直在持续不断地调用别人的接口,也偶尔给别人提供几个接口,日子过得倒也丰富……最近一个接口是用xml传输的,但不是写到一个xml文件中,而是拼接xml字符串,然后再通过SAX解析器使用InputSource对象读取XML……具体见代码:

//xml文件读取
public class xmlReaderTest {
	    public List xmlElements(String xmlDoc) {
		        //创建一个新的字符串
		        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;
		            for(int i=0;i<jiedian.size();i++){
		                et = (Element) jiedian.get(i);//循环依次得到子元素
		
		                System.out.println(et.getChild("users_id",ns).getText());
		                System.out.println(et.getChild("users_address",ns).getText());
		            }
		
		            et = (Element) jiedian.get(0);
		            List zjiedian = et.getChildren();
		            for(int j=0;j<zjiedian.size();j++){
		                Element xet = (Element) zjiedian.get(j);
		                System.out.println(xet.getName());
		            }
		        } catch (JDOMException e) {
		            e.printStackTrace();
		        } catch (IOException e) {
		            e.printStackTrace();
		        }
		        return null;
	    }

	public static void main(String[] args){
	        xmlReaderTest doc = new xmlReaderTest();
	          //拼接一个xml字符串
	        StringBuilder sbody = new StringBuilder();
	        sbody.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
	        sbody.append("<BODY>");
	        sbody.append("<ECCODE>");
	        sbody.append("2aettgdg");
	        sbody.append("</ECCODE>");
	        sbody.append("<PHONE>");
	        sbody.append("187XXXXXXXX");
	        sbody.append("</PHONE>");
	        sbody.append("<VOLUME>");
	        sbody.append("10M");
	        sbody.append("</VOLUME>");
	        sbody.append("</BODY>");
	
	        String body = sbody.toString();
	        doc.xmlElements(body);
	        System.out.println(doc.xmlElements(body));
	}
}


               也是因为XML让我知道原来双方互调接口,会有这么多事儿,这么多的规则,而且自己想要定义什么样的协议就定义什么样的协议,不管什么样的协议,都是为了更好的更安全的来达到双赢的效果……


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值