为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

偶然的你 2023-08-16 18:01:45
我第一次为我的作业解析 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 时,我遇到了错误,因为变量为空。
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您的“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”节点中的所有内容即可。其中一种方法是仅在解析“模拟”部分时进入检索 x、y 和 id 属性的循环。


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

此修改将允许您跳过“模拟”节点中不存在的任何内容


查看完整回答
反对 回复 2023-08-16
  • 1 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信