0

以下は、各ノードの属性、つまり名前とタイプを表示する必要がある私のxmlコードです。

xml:

<node label="Tree Data">
<node name="View" type="Page">
<node name="Organisational Structure" type="Page"/>
<node name="Experience" type="Page"/>
<node name="Expertise" type="Language">
<node name="Flex" type="Language"/>
<node name="Android" type="Language"/>
<node name="Java" type="Language"/>
</node>
<node name="Project" type="Project">
<node name="Sabre" type="Project"/>
<node name="Android Project" type="Project"/>
<node name="Media Framework" type="Project"/>
<node name="CCD" type="Project"/>
<node name="Redbus" type="Project"/>
<node name="India Today" type="Project"/>
<node name="Money Control" type="Project"/>
</node>
</node>
<node name="Reorganize" type="Action"/>
<node name="Add New Employee" type="Action">
<node name="Dir" type="Page"/>
<node name="P.M" type="Page"/>
<node name="S.E" type="Page"/>
<node name="JUN" type="Page"/>
<node name="EMP" type="Page"/>
</node>
<node name="Add Project Members" type="Action"/>
</node>

私は次の出力を得ています:

出力:

01-23 17:13:26.047: I/System.out(3846): name : 
01-23 17:13:26.057: I/System.out(3846): type : 
01-23 17:13:26.057: I/System.out(3846): name : View
01-23 17:13:26.077: I/System.out(3846): type : Page
01-23 17:13:26.077: I/System.out(3846): name : Organisational Structure
01-23 17:13:26.077: I/System.out(3846): type : Page
01-23 17:13:26.097: I/System.out(3846): name : Experience
01-23 17:13:26.097: I/System.out(3846): type : Page
01-23 17:13:26.097: I/System.out(3846): name : Expertise
01-23 17:13:26.097: I/System.out(3846): type : Language
01-23 17:13:26.097: I/System.out(3846): name : Flex
01-23 17:13:26.097: I/System.out(3846): type : Language
01-23 17:13:26.117: I/System.out(3846): name : Android
01-23 17:13:26.117: I/System.out(3846): type : Language
01-23 17:13:26.117: I/System.out(3846): name : Java
01-23 17:13:26.128: I/System.out(3846): type : Language
01-23 17:13:26.128: I/System.out(3846): name : Project
01-23 17:13:26.139: I/System.out(3846): type : Project
01-23 17:13:26.139: I/System.out(3846): name : Sabre
01-23 17:13:26.139: I/System.out(3846): type : Project
01-23 17:13:26.147: I/System.out(3846): name : Android Project
01-23 17:13:26.147: I/System.out(3846): type : Project
01-23 17:13:26.167: I/System.out(3846): name : Media Framework
01-23 17:13:26.167: I/System.out(3846): type : Project
01-23 17:13:26.167: I/System.out(3846): name : CCD
01-23 17:13:26.167: I/System.out(3846): type : Project
01-23 17:13:26.167: I/System.out(3846): name : Redbus
01-23 17:13:26.167: I/System.out(3846): type : Project
01-23 17:13:26.167: I/System.out(3846): name : India Today
01-23 17:13:26.177: I/System.out(3846): type : Project
01-23 17:13:26.187: I/System.out(3846): name : Money Control
01-23 17:13:26.187: I/System.out(3846): type : Project
01-23 17:13:26.187: I/System.out(3846): name : Reorganize
01-23 17:13:26.187: I/System.out(3846): type : Action
01-23 17:13:26.187: I/System.out(3846): name : Add New Employee
01-23 17:13:26.187: I/System.out(3846): type : Action
01-23 17:13:26.197: I/System.out(3846): name : Dir
01-23 17:13:26.197: I/System.out(3846): type : Page
01-23 17:13:26.217: I/System.out(3846): name : P.M
01-23 17:13:26.217: I/System.out(3846): type : Page
01-23 17:13:26.217: I/System.out(3846): name : S.E
01-23 17:13:26.217: I/System.out(3846): type : Page
01-23 17:13:26.217: I/System.out(3846): name : JUN
01-23 17:13:26.217: I/System.out(3846): type : Page
01-23 17:13:26.228: I/System.out(3846): name : EMP
01-23 17:13:26.228: I/System.out(3846): type : Page
01-23 17:13:26.237: I/System.out(3846): name : Add Project Members
01-23 17:13:26.237: I/System.out(3846): type : Action

しかし、実際には次の出力が必要です:

望ましい出力:

01-23 17:13:26.057: I/System.out(3846): name : View
01-23 17:13:26.077: I/System.out(3846): type : Page
01-23 17:13:26.077: I/System.out(3846): name : Organisational Structure
01-23 17:13:26.077: I/System.out(3846): type : Page
01-23 17:13:26.097: I/System.out(3846): name : Experience
01-23 17:13:26.097: I/System.out(3846): type : Page
01-23 17:13:26.097: I/System.out(3846): name : Expertise
01-23 17:13:26.097: I/System.out(3846): type : Language
01-23 17:13:26.097: I/System.out(3846): name : Flex
01-23 17:13:26.097: I/System.out(3846): type : Language
01-23 17:13:26.117: I/System.out(3846): name : Android
01-23 17:13:26.117: I/System.out(3846): type : Language
01-23 17:13:26.117: I/System.out(3846): name : Java
01-23 17:13:26.128: I/System.out(3846): type : Language
01-23 17:13:26.128: I/System.out(3846): name : Project
01-23 17:13:26.139: I/System.out(3846): type : Project
01-23 17:13:26.139: I/System.out(3846): name : Sabre
01-23 17:13:26.139: I/System.out(3846): type : Project
01-23 17:13:26.147: I/System.out(3846): name : Android Project
01-23 17:13:26.147: I/System.out(3846): type : Project
01-23 17:13:26.167: I/System.out(3846): name : Media Framework
01-23 17:13:26.167: I/System.out(3846): type : Project
01-23 17:13:26.167: I/System.out(3846): name : CCD
01-23 17:13:26.167: I/System.out(3846): type : Project
01-23 17:13:26.167: I/System.out(3846): name : Redbus
01-23 17:13:26.167: I/System.out(3846): type : Project
01-23 17:13:26.167: I/System.out(3846): name : India Today
01-23 17:13:26.177: I/System.out(3846): type : Project
01-23 17:13:26.187: I/System.out(3846): name : Money Control
01-23 17:13:26.187: I/System.out(3846): type : Project
01-23 17:13:26.187: I/System.out(3846): name : Reorganize
01-23 17:13:26.187: I/System.out(3846): type : Action
01-23 17:13:26.187: I/System.out(3846): name : Add New Employee
01-23 17:13:26.187: I/System.out(3846): type : Action
01-23 17:13:26.197: I/System.out(3846): name : Dir
01-23 17:13:26.197: I/System.out(3846): type : Page
01-23 17:13:26.217: I/System.out(3846): name : P.M
01-23 17:13:26.217: I/System.out(3846): type : Page
01-23 17:13:26.217: I/System.out(3846): name : S.E
01-23 17:13:26.217: I/System.out(3846): type : Page
01-23 17:13:26.217: I/System.out(3846): name : JUN
01-23 17:13:26.217: I/System.out(3846): type : Page
01-23 17:13:26.228: I/System.out(3846): name : EMP
01-23 17:13:26.228: I/System.out(3846): type : Page
01-23 17:13:26.237: I/System.out(3846): name : Add Project Members
01-23 17:13:26.237: I/System.out(3846): type : Action

Java コード:

package com.example.xmlparsevdatr;

import java.io.IOException;
import java.io.StringWriter;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    Document dom;

    public MainActivity() {
        MainActivity();

        ArrayList<Element> listGroup = getGroups();

    }

    private ArrayList getGroups() {
        try {
            Element documentElement = (Element) dom.getDocumentElement();
            NodeList childNodes = documentElement.getElementsByTagName("node");

            for (int i = 0; i < childNodes.getLength(); i++) {

                if (childNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {
                    Element element = (Element) childNodes.item(i);
                    String name = element.getAttribute("name");
                    String type = element.getAttribute("type");
                    System.out.println("name : " + name);
                    System.out.println("type : " + type);
                }
            }
        } catch (Exception e) {
        }
        return null;

    }

    private void MainActivity() {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        // System.out.println("Inside xml");

        try {
            String sURL = "http://192.168.2.6/cgi-bin/EmployeeTreeCgi/TreeStrutRet.cgi?Username=admin@ohile.com";
            URL url = new URL(sURL);
            DocumentBuilder db = dbf.newDocumentBuilder();

            dom = db.parse(new InputSource(url.openStream()));

        } catch (ParserConfigurationException pce) {
            pce.printStackTrace();
        } catch (SAXException se) {
            se.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
}
4

2 に答える 2

1

問題は、存在しない最初のノードの名前とタイプを出力しようとしていることです。したがって、出力に最初の 2 行が表示されます。

印刷する前に、要素に実際に名前と型があるかどうかを確認してください。

于 2013-01-23T11:57:11.710 に答える
0

あなたの XML は良くないようです。

first <node>要素にはと属性does notがあります。nametype

理想的には、XML を使用している間は、親と子に同じ名前を付けないでください。たとえば、XML は次のようになります。

<books>
    <book id=1/>
    <book id=2/>
</books>

また、formatting your XML読みやすくするために適切に検討してください。

編集:

次のように、属性を取得する前にチェックを行うことができます。

if(childNodes.item(i).hasAttribute("name")) {
    // print the name
}
于 2013-01-23T12:08:17.437 に答える