我在this tutorial的DOM解析器的代码中看到了下面这行.

doc.getDocumentElement().normalize();

我们为什么要这样做

将所有文本 node 放置在此 node 下的子树的整个深度

好的,那么有人能给我看一下(最好是带张照片)这棵树是什么样子吗?

谁能解释一下为什么需要正常化

推荐答案

这句话的其余部分是:

其中只有 struct (例如元素、注释、处理指令、CDATA节和实体引用)分隔文本 node ,即既没有相邻的文本 node ,也没有空文本 node .

这基本上意味着以下XML元素

<foo>hello 
wor
ld</foo>

可以在非规范化 node 中这样表示:

Element foo
    Text node: ""
    Text node: "Hello "
    Text node: "wor"
    Text node: "ld"

规范化后, node 将如下所示

Element foo
    Text node: "Hello world"

属性也是一样:<foo bar="Hello world"/>, comments 等等.

Java相关问答推荐

Android视图覆盖不阻止点击它后面的控件

使用联接和分页的SpringBoot Spring数据JPA

对运行在GraalVM-21上的JavaFX应用程序使用分代ZGC会警告不支持JVMCI,为什么?

生成桥方法以解决具有相同擦除的冲突方法

如何在EXCEL单元格中添加形状和文本

在向WebSphere中的文档添加元素时iText挂起

带有Health Check的Spring Boot BuildPack打破了本机映像构建过程

如何从HttpResponse实例获取Entity对象的内容?

AbstractList保证溢出到其他方法

如何在ImageIO或十二只猴子中旋转TIFF CMYK图像?

如何在Maven Central上部署?

在Java Spring JPA中插入包含对其他实体的引用的列

在权限列表中找不到我的应用程序

TinyDB问题,无法解析符号';上下文&

在单例类上获取Java锁,了解原因

Java CDI:@Singleton@Startup@Inject无法实现接口

整数->;双取消框,但双->;int不';t开箱.为什么?

如何使用Rascal Evaluator从编译的JAR访问Rascal函数?

为什么Spring要更改Java版本配置以及如何正确设置?

使用Java线程进行并行编程