Java将XML字符串转Document需用安全配置的DOM解析器:禁用DOCTYPE和外部实体,用ByteArrayInputStream包装UTF-8字节数组解析。
用Java把XML字符串转成Document对象,核心是用DOM解析器(DocumentBuilder),关键在于正确配
置解析器并处理字符串输入流。
不要直接用DocumentBuilderFactory.newInstance()默认实例——它可能有XXE漏洞或不支持命名空间。要显式禁用外部DTD和实体解析:
setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)
setFeature("http://xml.org/sax/features/external-general-entities", false)
setFeature("http://xml.org/sax/features/external-parameter-entities", false)
setNamespaceAware(true)(如果XML含命名空间)DocumentBuilder.parse()不直接接受字符串,需先转为字节流。推荐用ByteArrayInputStream,并指定UTF-8编码避免乱码:
xmlString.getBytes(StandardCharsets.UTF_8)获取字节数组new ByteArrayInputStream(bytes)
builder.parse(inputStream)
以下是一个简洁、健壮的工具方法:
public static Document stringToDocument(String xml) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8)));
}
调用时捕获ParserConfigurationException、SAXException、IOException即可。
如果XML字符串开头有BOM(如UTF-8 BOM \uFEFF),可能导致解析失败。可在解析前用xml.stripLeading()(Java 11+)或正则去掉首部不可见字符;或者用InputStreamReader配合InputSource更精细控制编码。
基本上就这些。不复杂但容易忽略安全配置和编码处理。
# java
# apache
# 编码
# 字节
# 工具
# win
# stream
相关文章:
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
免费网站制作appp,免费制作app哪个平台好?
如何通过虚拟主机空间快速建站?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
如何在阿里云通过域名搭建网站?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
Python如何创建带属性的XML节点
制作网站公司那家好,网络公司是做什么的?
一键网站制作软件,义乌购一件代发流程?
如何选择靠谱的建站公司加盟品牌?
建站主机选虚拟主机还是云服务器更好?
制作销售网站教学视频,销售网站有哪些?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
如何通过wdcp面板快速创建网站?
建站之星安装需要哪些步骤及注意事项?
中山网站制作网页,中山新生登记系统登记流程?
如何在Windows服务器上快速搭建网站?
股票网站制作软件,网上股票怎么开户?
如何在万网开始建站?分步指南解析
c# 在高并发下使用反射发射(Reflection.Emit)的性能
宝塔建站后网页无法访问如何解决?
威客平台建站流程解析:高效搭建教程与设计优化方案
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
如何用IIS7快速搭建并优化网站站点?
如何在西部数码注册域名并快速搭建网站?
如何通过西部数码建站助手快速创建专业网站?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
,制作一个手机app网站要多少钱?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
如何注册花生壳免费域名并搭建个人网站?
如何通过WDCP绑定主域名及创建子域名站点?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
如何高效配置IIS服务器搭建网站?
如何在IIS服务器上快速部署高效网站?
如何获取上海专业网站定制建站电话?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
建站之星如何快速生成多端适配网站?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
高防服务器如何保障网站安全无虞?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
高端建站如何打造兼具美学与转化的品牌官网?
如何用已有域名快速搭建网站?
如何在景安服务器上快速搭建个人网站?
北京专业网站制作设计师招聘,北京白云观官方网站?
网站制作需要会哪些技术,建立一个网站要花费多少?
,如何利用word制作宣传手册?
*请认真填写需求信息,我们会在24小时内与您取得联系。