Java更改和移动非标准XML文件

2024-04-12

我正在使用第三方应用程序,并且想要更改其文件之一。该文件以 XML 格式存储,但文档类型无效。

当我尝试读取 use a 时,它会出错,因为文档类型包含“file:///ReportWiz.dtd” (如图所示,带引号),我得到一个找不到文件的异常。有没有办法告诉文档生成器忽略这个?我已尝试将 DocumentBuilderFactory 的 setValidate 设置为 false 并将 setNamespaceAware 设置为 false。

我能想到的唯一解决方案是

  • 将文件逐行复制到一个新文件中,省略有问题的行,执行我需要做的事情,然后复制到另一个新文件中并将有问题的行重新插入,或者
  • 与上面的操作基本相同,但使用某种 FileStream(尽管我不清楚如何做到这一点..帮助?)

DocumentBuilderFactory docFactory = DocumentBuilderFactory
                    .newInstance();
docFactory.setValidating(false);
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(file);  

告诉您的 DocumentBuilderFactory 忽略 DTD 声明,如下所示:

docFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

See here http://xerces.apache.org/xerces2-j/features.html获取可用功能的列表。

您还可能会发现 JDOM 比 org.w3c.dom 更容易使用:

org.jdom.input.SAXBuilder builder = new SAXBuilder();
builder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
org.jdom.Document doc = builder.build(file);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java更改和移动非标准XML文件 的相关文章

随机推荐

  • 在幻灯片模式下运行 Jupyter 单元

    您可以通过运行以下命令在活动的 html 设置中显示 Jupyter 笔记本 jupyter nbconvert untitled ipynb to slides post serve 有没有什么方法可以以相同的幻灯片格式运行笔记本 以便实
  • 1 到 n 的整数之和

    我正在尝试编写一个程序来将 1 到 n 的数字相加 我已经设法让它多次打印数字 但不能将它们全部相加 它继续将两个数字相加 我的第一次尝试是 def problem1 3 n my sum 0 while my sum lt n my su
  • 手臂“版本”之间的差异? (仅限 ARMv7)

    基本上我想知道ARMv7l和ARMv7之间的区别hl 我有一个带有armv7l的arm处理器 并且有很多armv7的rpmhl 我完全不知道我必须搜索什么才能获得相关信息 这个 后缀 叫什么 还有其他类型吗 他们的做法有何不同 我假设它指示
  • 是否可以延长 Intellitrace 事件?

    具体来说 我想做的是从我的应用程序和库中引发新事件 类似于 ADO NET 公开的事件 现实生活场景 NHibernate 的补丁 即使查询已被缓存 因此不会到达 ADO NET 层 也会显示已执行的查询 我找到了很多关于usingInte
  • FragmentPagerAdapter 根据参数值在选项卡上重新加载处理后的片段

    我已经使用创建了我的项目this https github com tekinarslan AndroidMaterialDesignToolbar材料设计示例 我已经修改了代码 现在我有 5 个选项卡 现在我已经创建了 5 个片段类并将其
  • 无法更改 Django 管理模板

    刚刚开始官方 Django 教程 https docs djangoproject com en 1 7 intro tutorial02 customizing your project s templates并且已经遇到问题 无法在管理
  • 如何使用 Python OpenCV 定义阈值以仅检测图像中的绿色对象?

    我只想从自然环境中捕获的图像中检测绿色物体 我该如何定义它 因为在这里我想通过阈值 所以我们说 x 通过使用这个x 我只想将绿色对象变成一种颜色 白色 而其他对象必须以另一种颜色 黑色 出现 我该怎么做 One way 我制作了 HSV 颜
  • 学习 Ruby - 1.8 还是 1.9 版本?

    我已经学习 Python 一段时间了 但我想做的项目更适合 Ruby 例如 CSS 的 SAC API 在 Ruby 以及 C 和 Java 中可用 不管怎样 考虑到我将要构建 我现在应该学习哪个版本的 Rubyonly网络应用程序 感谢您
  • 检查下划线模板中未定义的变量

    我在模板中显示了libraryPrep对象的模式视图 如下所示 if isUndefined this libraryPreps this el html this template else this el html this templ
  • Python:对第一个 OOP 风格脚本的反馈/更正

    我想要一些关于我的第一个使用 OOP 风格的 Python 脚本的反馈 这是一个 Munin 插件 根据插件名称 dell fans dell temps 绘制平均风扇速度或平均机箱温度图表 大约一个小时前我提交了程序版本 https st
  • Minikube 无法在 Windows 11 家庭版和 Docker 桌面上启动

    我有 Windows 11 家庭版 不允许 Hyper V 只有专业版允许 安装了 WSL2 和 Docker Desktop 使用 Chocolatey 安装了 Minikube 但它拒绝启动 在 SO 上搜索 我在几篇文章中找到了这个建
  • 如何重载一些 Groovy 类型转换以避免 NumberFormatException 的 try/catch?

    我厌倦了封装每个调用asType with try catch块如 def b def c try c b as Integer catch NumberFormatException c null println c 相反 我想在我的代码
  • 每个用户/浏览器会话仅显示一次欢迎 div

    我只想为每个用户或会话显示一次欢迎 div 我知道有 Jquery 选项 由于我是jquery的新手 我自己无法解决这个问题 请帮忙 document ready function close welcome click function
  • 使用 Crypto Node.js 出现错误“数据对于密钥大小来说太大”

    我收到错误 Error error 0406C06E rsa routines RSA padding add PKCS1 type 1 data too large for key size 当我做 var crypto require
  • MySql 视图动态且高效吗?

    我正在创建一个表视图 该视图将突出显示满足特定条件的数据 例如 如果我有一个包含整数值的表 我希望我的视图显示值大于 100 的行 我知道如何通过在表上创建视图来实现此目的 但是该视图是动态的吗 我已经在 MySQL 中测试过了 这似乎是正
  • 如何在 Magento 中更改订单起始编号

    有没有办法在 Magento 中更改订单起始编号而不更改已有的订单号 我只想为所有新订单设置 170000xxxx Thanks Look in eav entity store并找到increment last id 更新此号码 确保en
  • 在 Windows 上使用 PHP 获取共享驱动器列表?

    我想显示连接到运行 Windows 的系统的共享驱动器列表 有这方面的教程吗 我在 PHP 中尝试过以下代码 echo
  • 在 Android 中向 TabActivity 添加意图

    我查了一些关于如何在android中构建TAB的在线教程 并看到了符合我要求的教程 我很高兴实施它并且效果很好 当我希望每个单独的选项卡推送到一个单独的活动时 问题就出现了 我无法开始并打算传递控制权 我只给出了关于如何制作选项卡的主要代码
  • 如何在 Android Studio 中使用不同的模拟器

    我在 Android Studio 中构建 qemu 模拟器时遇到问题 还有一些其他的 Android 模拟器 如何配置 Android Studio 使用不同的模拟器 我用的是leapdroid模拟器http www leapdroid
  • Java更改和移动非标准XML文件

    我正在使用第三方应用程序 并且想要更改其文件之一 该文件以 XML 格式存储 但文档类型无效 当我尝试读取 use a 时 它会出错 因为文档类型包含 file ReportWiz dtd 如图所示 带引号 我得到一个找不到文件的异常 有没