Php 将XML标记名中的“:”替换为“\”

Php 将XML标记名中的“:”替换为“\”,php,xml,rss,simplexml,rdf,Php,Xml,Rss,Simplexml,Rdf,我使用的XML可以在这里找到: 问题是有很多标记带有:。我们想用u替换:。 像rdf:about、dc:date、rdf:resources这样的标记应该变成rdf\u-about、dc\u-date和rdf\u-resources 我们使用的是PHP和simplexml。简单的回答是,如果您将此XML作为XML使用,那么您真的不应该尝试这样做。是一个URI,它是通过将与前缀关联的名称空间连接到前面的部分和后面的部分的本地名称来构造的。这意味着当您看到XML时,如: 2013-06-07T13

我使用的XML可以在这里找到:

问题是有很多标记带有:。我们想用u替换:。 像rdf:about、dc:date、rdf:resources这样的标记应该变成rdf\u-about、dc\u-date和rdf\u-resources


我们使用的是PHP和simplexml。

简单的回答是,如果您将此XML作为XML使用,那么您真的不应该尝试这样做。是一个URI,它是通过将与前缀关联的名称空间连接到前面的部分和后面的部分的本地名称来构造的。这意味着当您看到XML时,如:

2013-06-07T13:02:42Z nl 您有一个名为rss的元素,其中包含一个名为channel的元素,其中包含名为http://purl.org/dc/elements/1.1/date 和http://purl.org/dc/elements/1.1/language. 您确实不想对其进行任何修改,因为这些URI提供了这些元素的含义。因为:实际上不是命名元素的结果URI的一部分,所以在元素的名称中谈论替换:是没有意义的,因为它一开始就不存在


如果您真的想丢弃所有这些语义信息,那么当然可以使用XML处理库来读取您拥有的XML,并编写新的XML来替换所有这些信息http://purl.org/dc/elements/1.1/language 使用dc_语言元素,但很难看出其中的实用性。

这似乎是一件非常不寻常的事情,而且这与XML QName的使用方式不一致。这样做的目的到底是什么?事实上,如果您希望XML被理解内容的程序读取,也就是说,您希望提要仍然是RSS阅读器可以解析的RSS提要,那么您不应该触摸冒号。否则,您可以将文件视为纯文本,并使用文本编辑器(如sed)替换字符。