Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 第一次解析XML文件时出现问题_Java_Xml - Fatal编程技术网

Java 第一次解析XML文件时出现问题

Java 第一次解析XML文件时出现问题,java,xml,Java,Xml,我第一次解析一个XML文件来做作业。我有一个问题,这可能是愚蠢的,但我找不到什么是错的。有些作品是法语的,因为法语是我的主要语言 这是我遇到麻烦的一段代码。 因此,有了最后几行代码,我就能够打印出需要发送给构造函数的信息 public void ParseXML(File fichierXML){ final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); {

我第一次解析一个XML文件来做作业。我有一个问题,这可能是愚蠢的,但我找不到什么是错的。有些作品是法语的,因为法语是我的主要语言

这是我遇到麻烦的一段代码。 因此,有了最后几行代码,我就能够打印出需要发送给构造函数的信息

public void ParseXML(File fichierXML){

        final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

        {
            try {
                final DocumentBuilder builder = factory.newDocumentBuilder();
                final Document document = builder.parse(fichierXML);
                final Element racine = document.getDocumentElement();
                final NodeList racineNoeuds = racine.getChildNodes();
                final int nbRacineNoeuds = racineNoeuds.getLength();

                // Adjusting XML file
                document.getDocumentElement().normalize();

                // Printing out the main node
                System.out.println("Racine (root) : " + racine.getNodeName());

                for (int i = 0; i<nbRacineNoeuds; i++)
                {
                    if(racineNoeuds.item(i).getNodeType() == Node.ELEMENT_NODE)
                    {
                        final Element sousSection = (Element) racineNoeuds.item(i);
                        System.out.println("Sous-section : " + sousSection.getNodeName());

                        final NodeList usines = sousSection.getElementsByTagName("usine");
                        final int nbUsinesElements = usines.getLength();

                        for(int j = 0; j<nbUsinesElements; j++) {

                            final Element usine = (Element) usines.item(j);
                            String type = usine.getAttribute("type");
                            System.out.println(usine.getAttribute("type"));
                            String StringId = usine.getAttribute("id");
                            System.out.println(usine.getAttribute("id"));
                            String StringX = usine.getAttribute("x");
                            System.out.println(usine.getAttribute("x"));
                            String StringY = usine.getAttribute("y");
                            System.out.println(usine.getAttribute("y"));

                            //int id = Integer.parseInt(StringId);
                            //int x = Integer.parseInt(StringX);
                            //int y = Integer.parseInt(StringY);

                            //AjouterBatiment(new Usine(1, ImageIO.read(new File(("src/ressources/UMP0%.png"))),
                            //        new Point(x,y), 100));
                        }
                    }
                }

            } catch (ParserConfigurationException | IOException | SAXException |  NumberFormatException e) {
                e.printStackTrace();
            }

        }

    }
如果有任何帮助,我将不胜感激,因为我从昨晚开始就一直在处理这个问题,运气不好

谢谢大家!

您的“usine”元素分为两个部分-变形和模拟。完整输出如下所示:

Racine : configuration
Sous-section : metadonnees
usine-matiere



usine-aile



usine-moteur



usine-assemblage



entrepot



Sous-section : simulation
usine-matiere
11
32
32
usine-aile
21
320
32
usine-assemblage
41
160
192
entrepot
51
640
192
usine-matiere
13
544
576
usine-matiere
12
96
352
usine-moteur
31
320
352
当调试器在断点处停止代码时,它会在每次“命中”给定行时停止。前5次点击包括“metadonnes”中的元素,如输出中所示——因此这里没有问题,因为“metadonnes”中的元素不包含x、y和id属性。您需要跳过前5个停止,才能在调试器中获取所需的数据

要忽略这些“空”条目,您需要做的就是忽略“metadonnes”节点中的所有内容。其中一种方法是,在解析“simulation”部分时,只进入检索x、y和id属性的循环

for(int j = 0; "simulation".equals(sousSection.getNodeName()) && j<nbUsinesElements; j++) {

for(int j=0;“simulation.”equals(sousSection.getNodeName())&&j请添加输入xml和输出结果。刚刚添加了xml文件。还添加了输出。我刚刚将我的注释编辑为英语。顺便说一句,noeuds是Node,racine是Root。
for(int j = 0; "simulation".equals(sousSection.getNodeName()) && j<nbUsinesElements; j++) {