gpt4 book ai didi

java - 手工构建的 w3c 文档文本节点会导致奇怪的行为

转载 作者:行者123 更新时间:2023-11-30 05:00:16 26 4
gpt4 key购买 nike

以下代码会产生类似于以下内容的输出:

<parent>
<child/>
<secondChild/> ...

我预计它看起来如下:

<parent>  
parent text
<child></child>
<secondChild>second child text</secondChild>

有问题的代码如下:

Element parentNode= document.createElement("parent");
Text textNode = document.createTextNode("parent text");
Element childNode = document.createElement("child");
parentNode.appendChild(childNode);
childNode.appendChild(textNode);
childNode = document.createElement("secondChild");
textNode = document.createTextNode("second child text");
parentNode.appendChild(childNode);
childNode.appendChild(textNode);

我的问题是,通过重新引用 textNode 是否遗漏了一些在构建文档时导致问题的内容?

最佳答案

它按我的预期工作。也许你打印的方式有问题?试试这个:

import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter;

public class ThrowawayCode {
public static void main(String[] args) throws Exception {
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element parentNode = document.createElement("parent");
document.appendChild(parentNode);
Text textNode = document.createTextNode("parent text");
Element childNode = document.createElement("child");
parentNode.appendChild(childNode);
childNode.appendChild(textNode);
childNode = document.createElement("secondChild");
textNode = document.createTextNode("second child text");
parentNode.appendChild(childNode);
childNode.appendChild(textNode);

Source source = new DOMSource(document);
StringWriter writer = new StringWriter();
Result result = new StreamResult(writer);
TransformerFactory.newInstance().newTransformer().transform(source, result);
System.out.println(writer.toString());
}
}

输出:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><parent><child>parent text</child><secondChild>second child text</secondChild></parent>

编辑:如果您确实希望第一个文本位于子级之外而不是子级内部,则需要将代码更改为:

Text textNode = document.createTextNode("parent text");
Element childNode = document.createElement("child");
parentNode.appendChild(textNode);
parentNode.appendChild(childNode);

但我以为您刚刚输错了 XML。

关于java - 手工构建的 w3c 文档文本节点会导致奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7005019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com