Heim  >  Artikel  >  Backend-Entwicklung  >  Android Dom analysiert die XML-Methode

Android Dom analysiert die XML-Methode

黄舟
黄舟Original
2017-02-09 14:10:501522Durchsuche

Erstellen Sie zunächst selbst eine XML-Datei: DomTest.xml

<?xml version="1.0" encoding="utf-8"?>  
<classes>  
    <group name="一年级" num="10">  
        <person name="小明" age="7">  
            <chinese>  
                语文80  
            </chinese>  
            <english>  
                英语89  
            </english>  
        </person>  
        <person name="小强" age="8">  
            <chinese>  
                语文90  
            </chinese>  
            <english>  
                英语99  
            </english>  
        </person>  
    </group>  
    <group name="二年级" num="20">  
        <person name="小文" age="8">  
            <chinese>  
                语文85  
            </chinese>  
            <english>  
                英语95  
            </english>  
        </person>  
        <person name="小中" age="9">  
            <chinese>  
                语文80  
            </chinese>  
            <english>  
                英语90  
            </english>  
        </person>  
    </group>  
</classes>

Das analysierte Ergebnis wird wie folgt angezeigt:

Android Dom analysiert die XML-Methode

Lassen Sie uns den Quellcode analysieren :

/**  
 * 用dom方式 解析xml 文件  
 * @param fileName  
 */  
    private String domXmlParse(String fileName) {  
        String str="";  
        // xml文档创建工厂  
        DocumentBuilderFactory docFactory = DocumentBuilderFactory  
                .newInstance();  
        // xml文档创建实例  
        DocumentBuilder docBuilder;  
        // xml文档  
        Document doc = null;  
        InputStream inStream = null;  
        try {  
            docBuilder = docFactory.newDocumentBuilder();  
            // 从assets文件夹下获取文件 转换成输入流  
            inStream = this.getResources().getAssets().open(fileName);  
            doc = docBuilder.parse(inStream);  
            // 获取xml跟元素  
            Element rootEle = doc.getDocumentElement();  
            // 二级父元素的list列表  
            NodeList groupNode = rootEle.getElementsByTagName("group");  
            // NodeList childNode = rootEle.getElementsByTagName("person");  
            // 遍历Classe下所有的group  
            for (int i = 0; i < groupNode.getLength(); i++) {  
  
                Element groupEle = (Element) groupNode.item(i);  
                String groupName = groupEle.getAttribute("name");  
                String num = groupEle.getAttribute("num");  
                str =str+"name ="+groupName+" num = "+num+"\n";  
                  
                Log.e("xml", "name = " + groupName + "  num = " + num);  
  
//              NodeList personNode = groupNode.item(i).getChildNodes();  
                NodeList personNode = groupEle.getElementsByTagName("person");  
                // 遍历group下的所有person  
                for (int j = 0; j < personNode.getLength(); j++) {  
                    Element personEle = (Element) personNode.item(j);  
                    String name = personEle.getAttribute("name");  
                    String age = personEle.getAttribute("age");  
                    str =str+"personName ="+name+" personAge = "+age+"\n";  
                      
                    Log.e("xml", "name = " + name + "   age = " + age);  
  
                    Element chineseEle = (Element) personEle  
                            .getElementsByTagName("chinese").item(0);  
                    Element englistEle = (Element) personEle  
                            .getElementsByTagName("english").item(0);  
                    String chinese = chineseEle.getFirstChild().getNodeValue();  
                    String english = englistEle.getFirstChild().getNodeValue();  
                    str =str+"chinese = "+chinese+" english = "+english+"\n";  
                      
                    Log.e("xml", "chinese = " + chinese + "   english = "  
                            + english);  
                }  
            }  
  
        } catch (ParserConfigurationException e1) {  
            e1.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (SAXException e) {  
            e.printStackTrace();  
        }  
        return str;  
    }

definiert eine Reihe von Schnittstellen für die analysierte Version eines XML-Dokuments. Der Parser liest das gesamte Dokument ein und erstellt eine speicherresidente Baumstruktur, die der Code dann mithilfe der DOM-Schnittstelle bearbeiten kann. Vorteile: Der gesamte Dokumentbaum befindet sich im Speicher und ist einfach zu bedienen. Nachteile: Das Übertragen des gesamten Dokuments in den Speicher (einschließlich nutzloser Knoten) verschwendet Zeit und Platz Außerdem muss mehrfach auf diese Daten zugegriffen werden; die Hardwareressourcen sind ausreichend (Speicher, CPU).

Das Obige ist der Inhalt von Android Dom Parsing XML. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn