笔记模版

Dom解析Xml文件:

解析文件的思路很简单,就是根据xml标签来获取元素然后对获取的NodeList里面的内容进行提取。

下面给出一个xml文件,对它进行简单的分析

<?xml version="1.0" encoding="UTF-8" ?>
	<ArrayOfString>
		<string>郑州 (57083)</string>
		<string>开封 (57091)</string>
		<string>洛阳 (57073)</string>
		<string>平顶山 (57171)</string>
		<string>焦作 (53982)</string>
		<string>鹤壁 (53990)</string>
		<string>新乡 (53986)</string>
		<string>安阳 (53898)</string>
		<string>濮阳 (54900)</string>
		<string>许昌 (57089)</string>
		<string>漯河 (57186)</string>
		<string>三门峡 (57051)</string>
		<string>南阳 (57178)</string>
		<string>商丘 (58005)</string>
		<string>信阳 (57297)</string>
		<string>周口 (57195)</string>
		<string>驻马店 (57290)</string>
	</ArrayOfString>
	
我们以标签<string>来进行解析,把解析的结果存如一个List<String>中,根据<string>标签获取一个NodeList(内容的排序为从上到下),然后我们遍历NodeList从对应的Node中提取Node值(注意:程序中的in只要是一个xml信息流即可,可以从本地xml文件读取也可以通过网络请求获得)。
		List<String> list = new ArrayList<>();
		//解析xml流
		Document doc;
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db;
		try {
			db = dbf.newDocumentBuilder();
			doc = db.parse(in);
			NodeList nl = doc.getElementsByTagName("string");
			for(int i = 0 ; i < nl.getLength(); i++ ){
				Node n = nl.item(i);  
                if(n.getFirstChild().getNodeValue().equals("查询结果为空!")){
                   list.add("查询结果为空!");
                   break ;
                }
                list.add(n.getFirstChild().getNodeValue());
			}
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

最后总计一下在解析xml文件的时候常用的一些方法,这段代码复制之后可以正常运行:

		URL url = new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName=河南");
		HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
		urlConnection.setConnectTimeout(6000);
		
		Document doc;
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db;
		
		db = dbf.newDocumentBuilder();
		doc = db.parse(urlConnection.getInputStream());
		
		//获取文档根元素对象
		Element root = doc.getDocumentElement();
		//获取根元素下一级子元素的所有元素
		NodeList nodeList = root.getChildNodes();
		//获取指定节点列表
		NodeList nodeList2 = doc.getElementsByTagName("string");
		//遍历节点列表
		for(int i = 0 ; i < nodeList2.getLength(); i++){
			//获取一个Node对象
			Node node = nodeList2.item(i);
			//从子Node中获取一个NodeList
			NodeList nodeList3 = node.getChildNodes();
			//解析xml时常用的Node的一些方法
			System.out.println(node);
			System.out.println("Node的节点名字"+node.getNodeName());
			System.out.println("获取对应Node包含的内容"+node.getFirstChild().getNodeValue());
			System.out.println("获取对应Node包含的内容"+node.getTextContent());
			break;
		}
			
	

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值