java - 如何使用 java dom 从 xml 中删除 namespace ?

标签 java xml dom domdocument xml-namespaces

我有以下代码

DocumentBuilderFactory dbFactory_ = DocumentBuilderFactory.newInstance();
Document doc_;
DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder();
StringReader reader = new StringReader(s);
InputSource inputSource = new InputSource(reader);
doc_ = dBuilder.parse(inputSource);
doc_.getDocumentElement().normalize();

那我可以做

doc_.getDocumentElement();

并获取我的第一个元素,但问题不是 job,而是 tns:job

我知道并尝试使用:

dbFactory_.setNamespaceAware(true);

但这不是我想要的,我需要一些东西来完全摆脱命名空间。

任何帮助将不胜感激, 谢谢,

乔希

最佳答案

使用正则表达式函数。这将解决这个问题:

public static String removeXmlStringNamespaceAndPreamble(String xmlString) {
  return xmlString.replaceAll("(<\\?[^<]*\\?>)?", ""). /* remove preamble */
  replaceAll("xmlns.*?(\"|\').*?(\"|\')", "") /* remove xmlns declaration */
  .replaceAll("(<)(\\w+:)(.*?>)", "$1$3") /* remove opening tag prefix */
  .replaceAll("(</)(\\w+:)(.*?>)", "$1$3"); /* remove closing tags prefix */
}

关于java - 如何使用 java dom 从 xml 中删除 namespace ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4661154/

相关文章:

mysql - XML 列中的 SQL 查询

xml - 当引用的架构文件位于不同的项目/程序集中时,如何在 VS 中指定 XSD schemaLocation 属性?

javascript - 如何隐藏不包含文本的 DOM 元素?

java - 等待按下按钮(在 GUI 中)以推进代码

javax Websocket 处理 ping 消息

java - 如何获取windows系统文件夹的路径?

c++ - 在 C++ 中使用 tiny xml 进行 xml 解析的问题?

javascript - 无法将 ID 设置为在 JQUERY 中动态创建的标签

javascript - 使用 jQuery 对表行重新排序,但排除嵌套表

java - 与CXF 2.4.10相关的Spring初始化失败