1

理由はわかりませんが、XML DOM 解析を理解するのに非常に苦労しており、誰かがコードを理解するのを手伝ってくれるかどうか疑問に思っていました。現在、次の XML ファイルの内容があります。

<environment>
  <gravity direction="90" magnitude="20"/>
  <viscosity magnitude="0.8"/>
  <centermass magnitude="100" exponent="2.0"/>
  <wall id="1" magnitude="40" exponent="1.5"/>
  <wall id="2" magnitude="50" exponent="2.0"/>
  <wall id="3" magnitude="180" exponent="1.0"/>
  <wall id="4" magnitude="10" exponent="0.0"/>
</environment>

これは、さまざまなチュートリアルからコンパイルした Java クラスですが、重力や粘度などの個々のノードから値を抽出しようとすると行き詰まります。

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

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 java.io.*;

public class XMLParser{

    public static void main(String[] args) {
        try {

            File environment = new File("environment.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(environment);
            doc.getDocumentElement().normalize();

            System.out.println("Root element: " + doc.getDocumentElement().getNodeName());

            NodeList nodes = doc.getElementsByTagName("environment");

            for (int i = 0; i < nodes.getLength(); i++) {
                Node node = nodes.item(i);
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element element = (Element) node;

// I don't think I need to loop through nodes because I only have one environment node, but I've kept it there to deal with general cases. Then node contains the child nodes I would like to extract data from, such as gravity, viscosity, etc, but I'm not sure quite how to do it. 
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

長文失礼いたしました!ご協力ありがとうございました!

4

2 に答える 2

0

したがって、ループで確認する 1 つのノードがルート要素ノードになります。その子ノードを反復処理すると、それらが関心のある実際のノードになります。ルート要素に到達するために行ったように、これを行うことができます。また、これに関するチュートリアルを非常に簡単にグーグルで検索できます。

http://www.mkyong.com/java/how-to-read-xml-file-in-Java-dom-parser/

于 2013-09-13T05:07:23.737 に答える
0

1 まず、xml ファイルを読み込んでいます

2 XMLに対応する要素からメモリ構造を作成するDOMパーサーを呼び出します

3 ルート要素の取得

4 ルート要素の子を繰り返す

それで全部です

于 2013-09-13T05:08:02.170 に答える