【发布时间】:2018-03-17 05:06:23
【问题描述】:
我有一个需求,我需要读取 XML 文件并替换包含 /、" 的标签并将其另存为新文件。
原始标签格式:
<CollateralReportDocument xmlns="http://schemas.foo.com/sII/CollateralReportDocument/1.0">
新文件的标签应为:
<CollateralReportDocument>
我尝试过使用
Sed -i 's/<CollateralReportDocument xmlns="http://schemas.foo.com/sII/CollateralReportDocument/1.0">
/ <CollateralReportDocument>/g' filename.xml
...但它不起作用。你能帮我解决这个问题吗?
【问题讨论】:
-
修复正在读取文件的代码以支持命名空间是更好的做法。 XML 命名空间的存在是有原因的——它们是单个文档如何/为什么可以具有不同类型的(元)数据,并且设计这些模式的人不需要在有人可以组合之前协调一组名称这些模式在单个文档中。
-
即使您确实想将 CollateralReportDocument/1.0 命名空间中的所有内容都转换为默认命名空间,最好使用 XSLT 样式表,这样它就会知道如果您有
xmlns:crd="http://schemas.foo.com/sII/CollateralReportDocument/1.0"在您文档中的其他位置(或相同的未来版本)中,需要将文档的所有部分中的crd:bah更改为bah在树中发生定义的点下。