• XML三种解析方式


    第一种dom解析:

    String xml = "<persons>" +
                        "<person>" +
                        "<name>amos</name>" +
                        "<age>30</age>" +
                        "</person>" +
                        "<person>" +
                        "<name>tom</name>" +
                        "<age>18</age>" +
                        "</person>" +
                        "</persons>";
    
                DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
                Document parse = builder.parse(new ByteArrayInputStream(xml.getBytes()));
    
                Element element = parse.getDocumentElement();
    
                NodeList nodes = element.getElementsByTagName("person");
                for (int i = 0; i < nodes.getLength(); i++) {
                    NodeList person = nodes.item(i).getChildNodes();
                    for (int j = 0; j < person.getLength(); j++) {
                        if (person.item(j) instanceof Element)
                            Log.d("TAG","name:" + person.item(j).getNodeName() + ",value:" + person.item(j).getTextContent());
                    }
                }

    第二种sax解析:

     SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
     saxParser.parse(new ByteArrayInputStream(xml.getBytes()), new MyDefaultHandler());
    
    class MyDefaultHandler extends DefaultHandler {
    
            String currentTag;
    
            @Override
            public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                super.startElement(uri, localName, qName, attributes);
                currentTag = localName;
            }
    
            @Override
            public void characters(char[] ch, int start, int length)
                    throws SAXException {
                super.characters(ch, start, length);
                String value = new String(ch, start, length); // 将当前TextNode转换为String
                Log.d("TAG","name:" + currentTag + ",value:" + value);
            }
        }

    第三种pull解析:

        XmlPullParser xmlPullParser = XmlPullParserFactory.newInstance().newPullParser();
                xmlPullParser.setInput(new ByteArrayInputStream(xml.getBytes()), "UTF-8");
                int eventType = xmlPullParser.getEventType();
                boolean isEnd = false;
                while (!isEnd) {
                    switch (eventType) {
                        case XmlPullParser.START_DOCUMENT:
                            Log.d("TAG","START_DOCUMENT---name:" + xmlPullParser.getName());
                            break;
                        case XmlPullParser.START_TAG:
                            if (xmlPullParser.getName().equals("name")) {
                                String name = xmlPullParser.nextText();
                                Log.d("TAG","name:" + xmlPullParser.getName() + ",value:" + name);
                            } else if (xmlPullParser.getName().equals("age")) {
                                String name = xmlPullParser.nextText();
                                Log.d("TAG","name:" + xmlPullParser.getName() + ",value:" + name);
                            }
                            break;
                        case XmlPullParser.END_TAG:
                            Log.d("TAG","END_TAG---name:" + xmlPullParser.getName());
                            break;
                        case XmlPullParser.END_DOCUMENT:
                            Log.d("TAG","END_DOCUMENT---name:" + xmlPullParser.getName());
                            isEnd = true;
                            break;
                    }
                    eventType = xmlPullParser.next();
                }
  • 相关阅读:
    position笔记
    IFE-33笔记
    IFE-31 笔记
    selectedIndex
    iFE-30 笔记
    基于select的python聊天室程序
    python select网络编程详细介绍
    (转载)centos yum源的配置和使用
    python 多进程使用总结
    python迭代器实现斐波拉契求值
  • 原文地址:https://www.cnblogs.com/BruceV/p/12038476.html
Copyright © 2020-2023  润新知