xml文件简单解析

github地址:https://github.com/Dragonxwl/MyBasePro

1.ParseXmlService
xml文件流解析工具类

public class ParseXmlService {

    public HashMap<String, String> parseXml(InputStream inStream)
            throws Exception {
        HashMap<String, String> hashMap = new HashMap<String, String>();

        // 实例化一个文档构建器工厂
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        // 通过文档构建器工厂获取一个文档构建器
        DocumentBuilder builder = factory.newDocumentBuilder();
        // 通过文档构建器构建一个文档实例
        Document document = builder.parse(inStream);
        // 获取XML文件根节点
        Element root = document.getDocumentElement();
        // 获得子节点
        NodeList childNodes = root.getChildNodes();
        for (int y = 0; y < childNodes.getLength(); y++) {
            if (childNodes.item(y).getNodeType() == Node.ELEMENT_NODE) {
                if ("h5CoursewareUrl".equals(childNodes.item(y).getNodeName())) {
                    String h5CoursewareUrl = childNodes.item(y).getTextContent();
                    hashMap.put("KJUrl", h5CoursewareUrl);
                }
            }
        }

        return hashMap;
    }
}

2.在子线程中加载xml文件获取文件流然后解析

Runnable runnable = new Runnable() {
                    @Override
                    public void run() {
                        URL url = null;
                        try {
                            url = new URL(TextView_xml.getText().toString());
                            HttpURLConnection conn = (HttpURLConnection) url
                                    .openConnection();
                            conn.setConnectTimeout(5000);
                            // 把version.xml放到网络上,然后获取文件信息
                            ParseXmlService service = new ParseXmlService();
                            InputStream inStream = conn.getInputStream();
                            final HashMap<String, String> mHashMap = service.parseXml(inStream);
                            handler.post(new Runnable() {
                                @Override
                                public void run() {
                                    TextView_value.setText(mHashMap.get("KJUrl"));
                                }
                            });
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                };
                Thread thread = new Thread(runnable);
                thread.start();

3.xml文件内容截图


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,145评论 1 32
  • 一、简历准备 1、个人技能 (1)自定义控件、UI设计、常用动画特效 自定义控件 ①为什么要自定义控件? Andr...
    lucas777阅读 5,266评论 2 54
  • 所有知识点已整理成app app下载地址 J2EE 部分: 1.Switch能否用string做参数? 在 Jav...
    侯蛋蛋_阅读 2,513评论 1 4
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,451评论 0 9
  • 2012年的夏天,杨坤雅是高二,在她这种实验班,会因为成绩起伏进行人员调整,她记得很清楚,那天是八月二十号,她的同...
    白骨精的优雅阅读 294评论 0 2