当前位置: 首页 > 知识库问答 >
问题:

Java Dom解析器不会返回子节点

张炳
2023-03-14

我正在尝试解析一个XML文档,但由于某种原因,我无法从任何东西中获取任何子节点。我已经厌倦了我所知道的一切。我最初尝试使用Dom4J,但在命名空间方面遇到了重大困难。现在我正在尝试使用标准DOM解析器。

我已经阅读了oracle教程以及其他教程,但没有看到任何关于为什么我最基本的功能失败的建议。

我将首先分享我的代码:

package testingtemp;

import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;

public class DomParser {

    public static void main(String args[]){

        try{

            File inputFile = new File("C:\\Users\\jhamric\\Desktop\\Camt54.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(inputFile);
            doc.getDocumentElement().normalize();
            System.out.println("Root Element: "+doc.getDocumentElement().getChildNodes());

        }catch (Exception e){
            e.printStackTrace();
        }

    }

}

所以简单地说,我想做的就是返回根节点(即“文档”)的子节点。)有一个应该返回的子节点。

<?xml version="1.0"?>

-<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.04">


     -<BkToCstmrDbtCdtNtfctn>


         +<GrpHdr>


         -<Ntfctn>

                  <Id>161RD2521JI00XSZ</Id>

                  <CreDtTm>2016-01-27T13:25:21</CreDtTm>

这只是我的Xml的一小部分,但是您可以清楚地看到,thatBkToCstmrDbtCdtNtfctn应该作为打印屏幕中的子节点返回。相反,我的控制台输出如下所示:

Root Element: [Document: null]

它报告了正确的根元素,但是告诉我没有子节点。怎么回事?任何帮助都将不胜感激!

共有1个答案

吴腾
2023-03-14

您正在看到 NodeList.toString 的输出,它是 [Document: null]。这实际上并没有提供任何有意义的信息。

使用

NodeList nl = doc.getDocumentElement().getChildNodes();
System.out.println(nl.getLength());
if (nl.getLength() > 0)
    System.out.println(nl.item(0).getNodeName());

来验证你的元素在那里。

 类似资料:
  • 我想将正确格式的JSON从节点服务器发送回前端。 然后在前端,我使用jQuery发出一个请求 这是返回数据,但是,它是以字符串的形式返回数据。我尝试使用JSON. parse,但得到以下错误消息。节点端的数据是一个对象数组。也许这引起了一个问题。 未捕获的SyntaxError:意外的标记,在JSON中位于2847(…) 要填充轨道数组,我有以下代码 轨迹数组中的第一项是: "{↵ "专辑“:{↵

  • 我有一个带有简单表单的ejs模板,只有一个值: 在我的app.js我试图调用console.log(req.body),但它返回空 "{}". 这是我的app.js代码: 在其他问题上,很多人说他们会使用这款应用。使用(bodyParser.urlencoded({extended:false}));但一切都没有改变。我试过了。json()也是,但似乎没有什么变化。顺便说一句,我试过了。记录(请求

  • 这很奇怪,但让我尽力把它说清楚。 我有一个XML,我正在以普通方式从桌面读取,并通过DOM解析器对其进行解析。 读取XML以获取childs。 所以这里我的逻辑运行良好。当我尝试将相同的XML推送到队列并读取它并获取子节点时,它给我的子节点数是6。 这打乱了我解析XML的逻辑。有人能帮我吗? 更新 添加发送逻辑: 问题如果我从桌面读取这个xml,它说13个孩子,6个元素节点和7个文本nodes.T

  • 问题内容: 我试图从用户连续读取输入,直到用户键入退出为止。我仅通过输入“ quit”进行测试,但console.hasNext()似乎未返回false。实际上,似乎该程序在第7行(hasNext()行)上被阻止。有任何想法吗? 问题答案: 如果将your 声明为,它将询问是否要接收下一个值。然后,该类将等待用户输入内容,然后返回true。 保留文件之类的东西,其中输入大小是固定的。这样,当查询文

  • 我无法在neo4j浏览器中成功导入csv文件,因为节点已经创建,但它们不显示属性。有人看到问题了吗?我将描述我是如何进行的: 这就是csv文件的样子 我已经测试了这个csv文件,其中加载了csv,标题来自“file://testcsv3.csv”,作为line LIMIT 4 RETURN line 你知道我错过了什么吗?为什么属性activityName和time没有显示出来?-提前谢谢!

  • 我已经添加了科尔多瓦插件相机插件到我的离子应用程序,为了使用它的两个adnavtages-使用相机拍照,并从照片库中获取图像。 使用相机拍照在我的Android Galaxy s3设备上可以完美地工作,但是从图库获取图像会在成功结果函数中返回NULL。 我尝试使用$cordovaCamera.getPicture(如此处所述)和此示例中的navigator.camera.getPicture,在我