0

XML ファイルの解析について質問があります。XMLファイルがあるとしましょう:

<line>
   <point>
      <X>100</X>
      <Y>100</Y>
   </point>
   <point>
      <X>200</X>
      <Y>200</Y>
   </point>
</line>

そして、私はそれを使用して解析したいと思いDOMます:

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(f);
    doc.getDocumentElement().normalize();
    NodeList nList = doc.getElementsByTagName("point");

    for (int temp = 0; temp < nList.getLength(); temp++) {

        Node nNode = nList.item(temp);

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

            Element eElement = (Element) nNode;

            System.out.println("x: " + eElement.getElementsByTagName("X").item(0).getTextContent());

しかし、XMLファイルからXとYを整数として取得するにはどうすればよいですか? - 最初の X を x1、最初の Y を y1、2 番目の X を x2、2 番目の Y を y2 ?

私は試した:

int x1 = Integer.valueOf(eElement.getAttribute("X"));
int y1 = Integer.valueOf(eElement.getAttribute("Y"));

しかし、成功せずに

4

1 に答える 1

2
// Get the <line> element
NodeList nList = doc.getElementsByTagName("line");
Element line = (Element) nList.item(0);

// Get each <point> element from the <line>
Element point1 = (Element) line.getElementsByTagName("point").item(0);
Element point2 = (Element) line.getElementsByTagName("point").item(1);

// Get each <X> and <Y> from each <point> retrieved before
Integer x1 = Integer.parseInt(point1.getElementsByTagName("X").item(0).getTextContent());
Integer y1 = Integer.parseInt(point1.getElementsByTagName("Y").item(0).getTextContent());
Integer x2 = Integer.parseInt(point2.getElementsByTagName("X").item(0).getTextContent());
Integer y2 = Integer.parseInt(point2.getElementsByTagName("Y").item(0).getTextContent());

コード全体:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(f);
doc.getDocumentElement().normalize();

NodeList nList = doc.getElementsByTagName("line");

Element line = (Element) nList.item(0);

Element point1 = (Element) line.getElementsByTagName("point").item(0);
Element point2 = (Element) line.getElementsByTagName("point").item(1);

Integer x1 = Integer.parseInt(point1.getElementsByTagName("X").item(0).getTextContent());
Integer y1 = Integer.parseInt(point1.getElementsByTagName("Y").item(0).getTextContent());
Integer x2 = Integer.parseInt(point2.getElementsByTagName("X").item(0).getTextContent());
Integer y2 = Integer.parseInt(point2.getElementsByTagName("Y").item(0).getTextContent());

System.out.println("x1: " + x1 + "\ty1: " + y1 + "\tx2: " + x2 + "\ty2: " + y2);

出力:

x1: 100 y1: 100 x2: 200 y2: 200
于 2013-06-02T18:35:49.520 に答える