0

xml 構成ファイルを取得しました。

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Config>
    <useProxy>true</useProxy>
    <proxyReqPass>true</proxyReqPass>
    <proxyHost>proxy.net.br</proxyHost>
    <proxyUser>admin</proxyUser>
    <proxyPass>12345</proxyPass>
</Config>

Data() オブジェクトのリストがあります。各 Data() には、タグ名とタグの値の 2 つの文字列が含まれています。したがって、例のように、この xml ファイルのデータをこのリストに挿入したいと思います。

List<Data> data = new ArrayList<Data>();

        File fXmlFile = new File("Config.xml");
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);

        doc.getDocumentElement().normalize();

        NodeList elements = doc.getElementsByTagName("Config");

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

            Node nNode = elements.item(i);

            if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                Element eElement = (Element) nNode;

                data.add(new Data(eElement.getTagName(), eElement.getTextContent()));

            }
        }

リストを印刷する場合:

for(int i = 0; i < list.size(); i++)
                System.out.println("Node: " + list.get(i).getTagName() + " Value: " + list.get(i).getTextContent());

結果を次のようにしたい:

> Node: useProxy Value: true
Node: proxyReqPass Value: true
Node: proxyHost Value: proxy.net.br
Node: proxyUser Value: admin
Node: proxyPass Value: 12345

しかし、結果は次のとおりです。

> Node: Config Value: 
    false
    false

どこが間違っているのかわかりません 誰か助けてください

4

1 に答える 1

1

タグの検索結果を繰り返し処理しています<Config>。検索結果の子を繰り返し処理する必要があります。

NodeList configTags = doc.getElementsByTagName("Config");
// assuming there will only be one `Config` node
NodeList elements = configTags.item(0).getChildNodes();

for (int i = 0; i < elements.getLength(); i++) {
   // (everything else looks correct)...
}

クエリを実行するgetElementsByTagName()と、NodeList が返されます。この場合、常に 1 つのノード (ノード) が含まれている必要があり<Config>ます。子ノード (<useProxy>など) にアクセスするには、ノード リストから最初のノードを取得し、その子ノード qith をクエリする必要がありますgetChildNodes()

于 2013-10-31T12:53:08.830 に答える