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

我第一次为我的作业解析 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();


现在,每当我从尝试将注释分配给字符串变量的行中删除注释时,如果我检查调试器,我可以看到它们是空的。我不明白为什么,因为他们之前只打印了一行。


所以很明显,当我尝试将字符串转换为 int 时,我遇到了错误,因为变量为空。


偶然的你
浏览 108回答 1
1回答

梵蒂冈之花

您的“usine”元素出现在两个部分中 - 元数据和模拟。完整输出如下所示:Racine : configurationSous-section : metadonneesusine-matiereusine-aileusine-moteurusine-assemblageentrepotSous-section : simulationusine-matiere113232usine-aile2132032usine-assemblage41160192entrepot51640192usine-matiere13544576usine-matiere1296352usine-moteur31320352当调试器在断点处停止代码时,每次“命中”给定行时它都会停止。前 5 个命中包括来自“metadonnes”的元素,如输出中所示 - 因此这里没有问题,因为来自“metadonnes”的元素不包含 x、y 和 id 属性。您需要跳过前 5 步才能在调试器中获取所需的数据。您需要做什么来忽略那些“空”条目 - 只需忽略“metadonnes”节点中的所有内容即可。其中一种方法是仅在解析“模拟”部分时进入检索 x、y 和 id 属性的循环。for(int j = 0; "simulation".equals(sousSection.getNodeName()) && j<nbUsinesElements; j++) {此修改将允许您跳过“模拟”节点中不存在的任何内容
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java