如何用Java创建含XML标记与纯文本的org.w3c.dom.Element?
解决DOM元素中混合标签与纯文本的转义问题
嗨,我来帮你理清这个问题:你没法用所谓的“无标签仅存文本的虚拟XML节点”来解决这个转义问题,因为你遇到的核心问题是setTextContent的工作机制——它会把传入的所有内容都当作纯文本处理,自动转义<、>这类XML特殊字符,所以才会出现<label>这种转义后的结果。
正确的做法是直接构建真实的DOM节点树,而不是把HTML/XML字符串拼起来塞给setTextContent。具体代码应该这样写:
// 创建aff节点 Element aff = document.createElement("aff"); aff.setAttribute("id", "aff" + reference.id); // 创建label节点并设置文本 Element label = document.createElement("label"); label.setTextContent(reference.label); aff.appendChild(label); // 创建纯文本节点并添加到aff中 Text textNode = document.createTextNode(reference.value); aff.appendChild(textNode);
这样生成的DOM结构就会和你期望的完全一致:<aff id="aff1"><label>2</label>Laboratories for Human Nutrition and</aff>。
简单说,你需要把标签和纯文本拆分成独立的DOM节点(元素节点和文本节点),然后依次添加到父节点里,而不是用字符串拼接的方式一次性设置内容——DOM API设计就是让你通过节点操作来构建结构,而不是直接写标记字符串哦。
内容的提问来源于stack exchange,提问作者Oleh Kurpiak
相关产品推荐
相关产品推荐

