gpt4 book ai didi

java - 为什么 Transformer 返回 < 和 > 而不是 < 和 >?

转载 作者:行者123 更新时间:2023-11-30 03:01:24 25 4
gpt4 key购买 nike

trnsformer.transform(DomSource, streamResult);

DomSource 中的输入包含许多 <br>标签,但我得到 &gt&lt而不是<> <br>返回为&lt br &gt

我知道&lt &gt相当于<> 。如何使变压器类更改编码并返回 <br>反而 ?

XML 创建者

public class CreatXML 
{

public static void main(String[] args){

try {
File article = new File("article.txt");
Scanner scan = new Scanner (article);
StringBuilder str = new StringBuilder();
while (scan.hasNext())
{
str.append(scan.nextLine());
str.append("<br>");
}
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();

Element body = doc.createElement("div");
doc.appendChild(body);

Attr classAttr = doc.createAttribute("class");
classAttr.setValue("code");
body.setAttributeNode(classAttr);

Element p = doc.createElement("p");
p.appendChild(doc.createTextNode(str.toString()));
body.appendChild(p);

TransformerFactory transFatory = TransformerFactory.newInstance();
Transformer transformer = transFatory.newTransformer();
DOMSource dom = new DOMSource(doc);

StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(dom, result);
System.out.println(writer.toString());

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

输入示例

<br>这是一个输入样本<br>

输出

<?xml [stuff] ><div><p>&lt;br&gt;这是一个输入样本&lt;br&gt;&lt;br&gt;</p></div>

最佳答案

问题出在这里:

p.appendChild(doc.createTextNode(str.toString()));

您没有<br>文档中的元素。您有一个<p>文本内容包含四个字符 < 的元素, b , r ,和> 。根据格式正确的 XML,这些字符将以您所看到的方式进行编码。

换句话说,createTextNode不创建 XML 元素。

您需要创建单独的文本节点和元素节点,而不是 StringBuilder:

while (scan.hasNext()) {
p.appendChild(doc.createTextNode(scan.nextLine()));
p.appendChild(doc.createElement("br"));
}

关于java - 为什么 Transformer 返回 &lt 和 &gt 而不是 < 和 >?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35835961/

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