xml - 如何使用 Perl 的 LibXML 忽略错误的 xmlns 命名空间?

标签 xml perl namespaces xml-namespaces libxml2

我有一个 XML 文档引用了一个不可用的命名空间:

<microplateDoc xmlns="http://moleculardevices.com/microplateML">
...my data is here...
</microplateDoc>

我有一个脚本可以很好地读取它,但只有当我删除上面的两个标签时,它才会读取它,否则它会把它读取得一团糟。可以忽略它吗?我正在考虑编写另一个脚本来遍历我所有的输入文件并删除这两行,但我认为可能有更好的方法吗?

如果我确实检查了所有数据文件并删除了这两行,那么使用脚本执行此操作的最佳方法是什么?我假设只是打开每个文件,搜索这些术语,删除它们,保存文件,你能想到更好的方法吗?谢谢。

最佳答案

I have an XML document that references a namespace that is no available:

我怀疑您对什么是 XML 命名空间感到困惑。命名空间是 Uniform Resource Identifier ,也就是说符合 RFC 3305 的字符串。它不是(必然)统一资源 Locator,尽管它可以是,因为 URL 都是 URI。

重要的是:仅仅因为 XML 命名空间以 http:// 开头并不意味着 XML 解析器会查找它。它不会(除非编写它的人不了解 namespace 是什么,在这种情况下,您将遇到比这更多的问题)。

当您说读取此 XML 文档的脚本“读起来一团糟”时,您无法理解您的意思。可以忽略它吗?很可能是这样。毕竟,命名空间的部分目的是使在 XML 文档中嵌入信息成为可能,该文档的某些消费者可以忽略该信息。

另一方面,如果您不是唯一使用这些文件的人,您可能会因为删除其他人需要的数据而给自己带来大麻烦。

关于xml - 如何使用 Perl 的 LibXML 忽略错误的 xmlns 命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1997868/

相关文章:

C++ 和 XML : parsing XML in C++ working in Ubuntu Environment

Java:使用 IndentingXMLStreamwriter 会导致文件大小过大

perl - 为什么 Dumper 模块在其设置哈希的分配周围放置括号?

perl - 使用 GD::Graph 绘制条形图

perl - 如何在 perl 中禁用 stdout 重定向到文件缓冲?

c# - 2 个对象,完全相同(命名空间除外)c#

android - 无法解决错误属性 Alpha 未找到

unit-testing - 类型或命名空间名称 'VisualStudio' 在命名空间 'Microsoft' 中不存在

c# - 我不能使用 system.windows.control 命名空间

xml - XPath 1.0 在 XML 树中具有属性的最接近的前导和/或祖先节点