元素文本内容与标记。 java的

时间:2018-01-28 12:19:30

标签: java xml

我尝试创建org.w3c.dom.Element,其中包含xml makr up和纯文本

我需要得到像这样的结果

<aff id="aff1"><label>2</label>Laboratories for Human Nutrition and</aff>

但我只能得到这个

<aff id="aff1">&lt;label&gt;2&lt;/label&gt;Laboratories for Human Nutrition and</aff>

此代码创建aff xml节点

Element aff = document.createElement("aff");
aff.setAttribute("id", "aff" + reference.id);
aff.setTextContent("<label>" + reference.label + "</label>" + reference.value);

也许有一些方法可以为文本创建虚拟xml节点,它没有标签,但允许设置其文本内容?

1 个答案:

答案 0 :(得分:1)

setTextContent不解析DOM结构接收的文本,但将其设置为文本节点。另外,为了防止潜在的结构性错误,它会将<>等XML特殊字符转义为&lt;&gt;

如果您希望aff元素包含其他元素,则不能将其设置为文本。您需要创建单独的元素和文本节点,然后将它们作为子元素附加。所以,如果你想拥有

<aff>
    <label>1</label>
    some text
    <label>2</label>
    another text
</aff>

你需要像

这样的代码
Element aff = doc.createElement("aff");

Element label1 = doc.createElement("label");
label1.setTextContent("1");
Text text1 = doc.createTextNode("some text");

Element label2 = doc.createElement("label");
label2.setTextContent("2");
Text text2 = doc.createTextNode("another text");


aff.appendChild(label1);
aff.appendChild(text1);
aff.appendChild(label2);
aff.appendChild(text2);