文档章节

查询手机号存放到xml文件以及DOM解析xml文件

tiantian1994
 tiantian1994
发布于 2017/03/31 15:32
字数 439
阅读 17
收藏 0
package test;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

/**
 * Created by daitiantian on 2017/3/20.
 */

public class test{

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个手机号:");
        String x = sc.nextLine();
        System.out.println("结果:");
        String url="http://www.apifree.net/mobile/"+x+".xml";
        String s = sendPost(url,x);

        FileWriter fw = null;
        try {
            fw = new FileWriter("e:\\result.xml", true);
            fw.write(s);
            fw.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fw != null) {
                try {
                    fw.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        try {
            // 创建一个DocumentBuilderFactory对象
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            // 创建DocumentBuilder对象
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse("e:\\result.xml");
            NodeList reList = document.getElementsByTagName("m");
            int size = reList.getLength();
            for(int i = 0;i < size;++i){

                Node reNode = reList.item(i);
         
                NodeList childNodeList = reNode.getChildNodes();
                int childSize = childNodeList.getLength();

                for(int k = 0;k < childSize;++k){
                    // 获取子节点
                    Node childNode = childNodeList.item(k);
                    // 区分Elemet类型节点和Text类型节点
                    if(childNode.getNodeType() == Node.ELEMENT_NODE){
                        System.out.println(childNode.getFirstChild().getNodeValue() );
                    }//if
                }//for
            }//for
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!" + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输出流、输入流
        finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return result;
    }


}

网络编程部分参考:https://www.teakki.com/p/57df79fb1201d4c1629bba95

DOM解析xml部分参考:https://www.kancloud.cn/digest/java-run/128515

© 著作权归作者所有

下一篇: 泛型
tiantian1994
粉丝 1
博文 15
码字总数 3889
作品 0
南京
私信 提问
XML技术-Schema约束-Dom4j-Xpath详解

这辈子没办法做太多事情所以每一件都要做到精彩绝伦 People can't do too many things in my life,so everything will be wonderful 本文档参考资料w3cschool.CHM API教程文档免费下载地址h...

wyait
2017/04/18
0
0
Java 处理 XML 的三种主流技术及介绍

XML (eXtensible Markup Language) 意为可扩展标记语言,它已经是软件开发行业中大多数程序员和厂商用以选择作为数据传输的载体。本文作者对于 Java 处理 XML 的几种主流技术进行一些总结和介...

IBMdW
2012/08/14
7.8K
15
解析MyBatis配置文件mybatis-config.xml(一)

mybatis 配置文件 mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration <!-- 配置文件的根元素 --><configuration> </configuration> Mybatis 在初始化过程......

挽袖清风
2017/12/10
165
0
Java处理XML的三种主流技术

大名鼎鼎的 DOM 说它大名鼎鼎可是一点不为过,DOM 是 W3C 处理 XML 的标准 API,它是许多其它与 XML 处理相关的标准的基础,不仅是 Java,其它诸如 Javascript,PHP,MS .NET 等等语言都实现...

e良师益友
2016/01/13
57
0
Android的三种解析方式

第一种方式:DOM解析器: DOM是基于树形结构的的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树、检索所需数据。分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和...

津乐
2018/01/11
3
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端开发初级

Web 页面制作基础 Web 的相关概念 WWW Website URL Web Standard Web Browser Web Server HTML 基础 标记语言 从 HTML 到 XHTML HTML 的基本结构 HTML 的相关基本定义 HTML 常用开发工具 HT...

达达前端小酒馆
30分钟前
3
0
PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
15
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部