0

XML は次のとおりです。

<mesh>

  <triangles material="face" count="990">
          <input semantic="VERTEX" source="#boyShape-skin-vertices" offset="0"/>
          <input semantic="NORMAL" source="#boyShape-skin-normals" offset="1"/>
          <input semantic="TEXCOORD" source="#boyShape-skin-map-channel1" offset="2" set="1"/>
          <p>45 56 44 61 57 45 58 58 46 58 58 46 65 59 47 45 56 44 46 60 48 67 61 49 58 58 46 58 58 46 61 57 45 46 60 48 49 62 50 66 63 51 </p>
  </triangles>
  <triangles material="face" count="1320">
          <input semantic="VERTEX" source="#boyShape-skin-vertices" offset="0"/>
          <input semantic="NORMAL" source="#boyShape-skin-normals" offset="1"/>
          <input semantic="TEXCOORD" source="#boyShape-skin-map-channel1" offset="2" set="1"/>
          <p>45 46 60 48 49 62 50 66 63 51 45 56 44 61 57 45 58 58 46 58 58 46 65 59 47 45 56 44 46 60 48 67 61 49 58 58 46 58 58 46 61 57 45 46 60 48 49 62 50 66 63 51 </p>
  </triangles>
  <triangles material="face" count="1540">
          <input semantic="VERTEX" source="#boyShape-skin-vertices" offset="0"/>
          <input semantic="NORMAL" source="#boyShape-skin-normals" offset="1"/>
          <input semantic="TEXCOORD" source="#boyShape-skin-map-channel1" offset="2" set="1"/>
          <p>58 46 58 58 46 65 59 47 45 56 44 61 57 45 58 58 46 58 58 46 65 59 47 45 56 44 46 60 48 67 61 49 58 58 46 58 58 46 61 57 45 46 60 48 49 62 50 66 63 51 </p>
  </triangles> 
  </mesh>

Javaコードは

for(int s=0; s<mesh.getLength() ; s++){
    Node firstPersonNode = mesh.item(s);
    System.out.println(mesh.item(s).getNodeName() + " Test");
    if(firstPersonNode.getNodeType() == Node.ELEMENT_NODE){
        Element firstPersonElement = (Element)firstPersonNode;
        NodeList source = firstPersonElement.getElementsByTagName("triangles");    
        System.out.println(source.getLength() + "Source Length");
        Node firstsource = source.item(1); // triangles index given here
        if(firstsource.getNodeType() == Node.ELEMENT_NODE){
            Element firstPersonElement1 = (Element)firstsource;
            System.out.println(firstPersonElement1.getAttribute("id") + " -->  <-- ");
            NodeList floatarray = firstPersonElement1.getElementsByTagName("p");
            Element firstNameElement = (Element)floatarray.item(0);
            NodeList textFNList = firstNameElement.getChildNodes();
            System.out.println("Vertexes : " + ((Node)textFNList.item(0)).getNodeValue().trim());  
        }
    }
}

入力と三角形ノード内にある p を解析しようとしていますが、問題があります。問題は、上記のコードでインデックスを 1 に指定すると、すべての子ノードが検出されて解析されることです。1 以外の場合、子ノードの入力と p も検出されません。何が問題なのですか?この問題を解決するのを手伝ってください。

4

1 に答える 1

0

DOM API を使用してドキュメントを解析する方法は次のとおりです。

    NodeList triangles = document.getElementsByTagName("triangles");
    System.out.println("triangles: " + triangles.getLength());

    for (int i = 0; i < triangles.getLength(); i++) {
        Element triangle = (Element) triangles.item(i);
        System.out.println("triangle: material=" + triangle.getAttribute("material") + " count=" + triangle.getAttribute("count"));

        NodeList inputs = triangle.getElementsByTagName("input");
        for (int j = 0; j < triangles.getLength(); j++) {
            Element input = (Element) inputs.item(j);
            System.out.println("  input: semantic=" + input.getAttribute("semantic"));
        }

        Element vertices = (Element) triangle.getElementsByTagName("p").item(0);
        System.out.println("  vertices: " + vertices.getTextContent().trim());
    }
于 2012-07-27T08:29:13.880 に答える