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
相关文章:
如何通过WDCP绑定主域名及创建子域名站点?
如何快速登录WAP自助建站平台?
北京制作网站的公司,北京铁路集团官方网站?
广州美橙建站如何快速搭建多端合一网站?
怎么将XML数据可视化 D3.js加载XML
如何在七牛云存储上搭建网站并设置自定义域名?
大型企业网站制作流程,做网站需要注册公司吗?
家庭建站与云服务器建站,如何选择更优?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
海南网站制作公司有哪些,海口网是哪家的?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
建站与域名管理如何高效结合?
教程网站设计制作软件,怎么创建自己的一个网站?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
如何快速生成橙子建站落地页链接?
制作网站的软件免费下载,免费制作app哪个平台好?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
如何用虚拟主机快速搭建网站?详细步骤解析
中山网站推广排名,中山信息港登录入口?
建站之星备案流程有哪些注意事项?
建站之星如何快速生成多端适配网站?
制作表格网站有哪些,线上表格怎么弄?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
如何打造高效商业网站?建站目的决定转化率
南京网站制作费用,南京远驱官方网站?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
如何用VPS主机快速搭建个人网站?
建站VPS选购需注意哪些关键参数?
如何在橙子建站中快速调整背景颜色?
如何选择美橙互联多站合一建站方案?
网站制作服务平台,有什么网站可以发布本地服务信息?
linux top下的 minerd 木马清除方法
如何选择高性价比服务器搭建个人网站?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
利用JavaScript实现拖拽改变元素大小
网页设计与网站制作内容,怎样注册网站?
已有域名和空间如何搭建网站?
网站制作需要会哪些技术,建立一个网站要花费多少?
制作旅游网站html,怎样注册旅游网站?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
,南京靠谱的征婚网站?
南平网站制作公司,2025年南平市事业单位报名时间?
建站之星2.7模板:企业网站建设与h5定制设计专题
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
宁波自助建站系统如何快速打造专业企业网站?
深圳网站制作培训,深圳哪些招聘网站比较好?
定制建站如何定义?其核心优势是什么?
*请认真填写需求信息,我们会在24小时内与您取得联系。