0

n レベルの xml ファイルを解析し、その要素を表示する必要があります。属性を持つことはありません。私の現在のコード

String xmlInputFile="reportA.xml"  ;
        File file =new File(xmlInputFile);
        Document document;
        DocumentBuilder documentBuilder;
        DocumentBuilderFactory documentBuilderFactory;
        NodeList nodeList;
        documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilder = documentBuilderFactory.newDocumentBuilder();
        document = documentBuilder.parse(xmlInputFile);

        document.getDocumentElement().normalize();
         nodeList = document.getElementsByTagName("*");
        for (int index = 0; index < nodeList.getLength(); index++) {
            Node nodeA = nodeList.item(index);
            if (nodeA.getNodeType() == Node.ELEMENT_NODE) {
                Element element = (Element) nodeA;
                if(element.hasChildNodes()){
                    System.out.println("Name "+element.getNodeName()+" value "+element.getFirstChild().getNodeValue().trim());
                }
            }
        }

私のxmlファイルは

<?xml version="1.0" encoding="UTF-8" ?>
<company>
    <record>
        <name>
            <firstName>Brad</firstName>
            <lastName>Pitt</lastName>
        </name>
        <age>41</age>
        <dob>31/8/1982</dob>
        <income>200,000</income>
    </record>
</company>

現在の出力は次のとおりです。

Name company value 
Name record value 
Name name value 
Name firstName value Brad
Name lastName value Pitt
Name age value 41
Name dob value 31/8/1982
Name income value 200,000

会社、レコード、名前は必要ありません。これらの要素を削除するには?

4

1 に答える 1

0

コードをに変更しました

nodeList = document.getElementsByTagName("*");
        for (int index = 0; index < nodeList.getLength(); index++) {
            Node nodeA = nodeList.item(index);
           if (nodeA.getNodeType() == Node.ELEMENT_NODE) {
               NodeList nodeList1 = nodeA.getChildNodes();
               if(nodeList1.getLength()<=1 ){
                   String value="";
                    if(nodeList1.getLength()!=0){
                        value= nodeA.getFirstChild().getNodeValue();
                    } 
                    System.out.println("Name "+nodeA.getNodeName()+" value "+ value);
               }
           }

        }

現在、ルートノードのみが印刷されています。しかし、誰かがより良いアイデアを持っているかどうかを確認したいと思います..

于 2013-09-06T05:11:16.447 に答える