替换":" by" _"在XML标记名中

时间:2013-06-07 11:29:57

标签: php xml rss simplexml rdf

我正在使用的XML可以在这里找到: http://www.politie.nl/rss/ab/gemeenten/zuid-holland/rotterdam.xml

问题是有很多标签带有:。我们希望将:替换为_rdf:aboutdc:daterdf:resources等标记应为rdf_aboutdc_daterdf_resources

我们正在使用PHP和simplexml。

1 个答案:

答案 0 :(得分:3)

简短的回答是,如果您使用XML作为XML,那么您真的不应该尝试这样做。 XML QName是通过连接与前缀(:之前的部分)和本地名称(:之后的部分)关联的命名空间而构造的URI。这意味着,当您看到XML时:

<rss xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
     version="2.0">
  <channel>
    <dc:date>2013-06-07T13:02:42Z</dc:date>
    <dc:language>nl</dc:language>

您有一个名为rss的元素,其中包含名为channel的元素,其中包含名为http://purl.org/dc/elements/1.1/datehttp://purl.org/dc/elements/1.1/language的元素。你真的不想进行任何修改,因为这些URI提供了这些元素的含义。由于:实际上并不是命名元素的结果URI的一部分,因此讨论替换元素名称中的:是没有意义的,因为它在第一个中从未出现过的地方。

如果您真的想要丢弃所有语义信息,当然可以使用XML处理库来读取您拥有的XML,并编写用{http://purl.org/dc/elements/1.1/language替换所有dc_language的新XML。 1}}元素,但很难看到实用程序。