如何在 Java DOM 中正确嵌入 XML 片段而非转义文本-java教程

当使用 `element.settextcontent()` 设置含 “ 的 xml 字符串时,dom 会自动转义为 `

在 Java DOM 编程中,setTextContent() 的行为是严格符合 XML 规范的:它将传入字符串视为纯文本内容,因此所有特殊字符(如 , &, “, ‘)都会被自动转义,以确保生成的文档格式合法。这正是你观察到 zuojiankuohaophpcnGrpHdryoujiankuohaophpcn 等被保留为实体引用的原因——DOM 并非“出错”,而是在履行其核心职责:防止非法嵌套与解析歧义。

要实现真正的 XML 结构嵌入(即 内部包含 子元素,而非一段被转义的字符串),必须将目标 XML 片段解析为真实的 DOM 节点树,并将其导入(import) 到当前文档中。直接调用 appendChild() 时传入的是 Node 对象(如 Element),而非字符串。

✅ 正确做法一:手动构建子元素(适用于结构固定、逻辑简单场景)

Element fitoFi = document.createElementNS("urn:iso:std:iso:20022:tech:xsd", "ns1:FIToFI");

// 构建  元素及其子节点
Element grpHdr = document.createElement("GrpHdr");
Element msgId = document.createElement("MsgId");
msgId.setTextContent("MQSECJYJHRBPDTZTYNNEYXOZUPAUDEKVDFV");
grpHdr.appendChild(msgId);

Element creDtTm = document.createElement("CreDtTm");
creDtTm.setTextContent("2023-02-02T21:48:58.075+05:30");
grpHdr.appendChild(creDtTm);

fitoFi.appendChild(grpHdr);
document.getDocumentElement().appendChild(fitoFi);

✅ 正确做法二:解析 XML 字符串并导入节点(推荐用于动态/复杂片段)

当你的 sample 字符串是完整、合法的 XML 片段(如 “…”),且可能动态变化时,应使用 DocumentBuilder.parse() 解析,再通过 Document.importNode() 安全迁移节点:

String innerXml = "" +
    "MQSECJYJHRBPDTZTYNNEYXOZUPAUDEKVDFV" +
    "2023-02-02T21:48:58.075+05:30" +
    "";

// 1. 解析字符串为独立 Document
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document innerDoc = db.parse(new InputSource(new StringReader(innerXml)));

// 2. 获取根元素(此处为 GrpHdr)
Element innerRoot = innerDoc.getDocumentElement();

// 3. 导入到当前文档(deep=true 表示递归导入所有子节点)
Node imported = document.importNode(innerRoot, true);

// 4. 附加到 FIToFI 元素
Element fitoFi = document.createElementNS("urn:iso:std:iso:20022:tech:xsd", "ns1:FIToFI");
fitoFi.appendChild(imported);
document.getDocumentElement().appendChild(fitoFi);

⚠️ 关键注意事项:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 如何在 Java DOM 中正确嵌入 XML 片段而非转义文本-java教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4004517+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4004517+
  • 本周更新: 0+
  • 最后更新: 2026-03-16