【问题标题】:Replace ":" by "_" in XML Tagnames [closed]在 XML 标记名中将“:”替换为“_”[关闭]
【发布时间】:2013-06-07 11:29:56
【问题描述】:

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

问题是有很多带有: 的标签。我们想用_ 替换:。 像rdf:aboutdc:daterdf:resources 这样的标签应该变成rdf_aboutdc_daterdf_resources

我们正在使用 PHP 和 simplexml。

【问题讨论】:

  • 这似乎是一件很不寻常的事情,并且不符合 XML QNames 的使用方式。你到底想完成什么?
  • 确实,如果您希望 XML 被理解内容的程序读取(即您希望提要仍然是可以被 RSS 阅读器解析的 RSS 提要),您应该t 触摸冒号。否则,您可以将文件视为纯文本并使用文本编辑器(例如 sed)来替换字符。

标签: php xml rss simplexml rdf


【解决方案1】:

简短的回答是,如果您将此 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,并编写新的 XML 将所有 http://purl.org/dc/elements/1.1/language 替换为 dc_language 元素,但很难看出其中的实用性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    相关资源
    最近更新 更多