【问题标题】:Modify CDATA String and insert again in CDATA format?修改 CDATA 字符串并以 CDATA 格式再次插入?
【发布时间】:2017-07-16 12:32:12
【问题描述】:

实际上我有一个问题。我想在 XML 文件中以 CDATA 格式将一些内容附加到字符串。

<url><![CDATA[http://www.kinguin.net/category/1356/l-a-noire-steam-key/?nosalesbooster=1&country_store=1&currency=EUR]]</url>

在我用这段代码修改字符串之后:

$doc = simplexml_import_dom($dom);
    $items = $doc->xpath('//url');
    foreach ($items as $item) {
        $node = dom_import_simplexml($item);
        $node->textContent .= 'appendIT';
    }

我明白了:

<url>http://www.kinguin.net/category/1356/l-a-noire-steam-key/?nosalesbooster=1&amp;country_store=1&amp;currency=EURappendIT]]</url>

但是我怎么说“把它放回 CDATA 格式”呢?

此外。我想将此网址发送到我的数据库。但没有&amp;amp; 字符。那么如何在没有&amp;amp; 的情况下获取网址?

您好,谢谢!

【问题讨论】:

标签: php xml dom simplexml


【解决方案1】:

由于CDATA 在 XML 中代表“字符数据”,因此您可以将其视为字符串而无需对其进行解析。 CDATA 以]] 结尾(假设不是嵌套的CDATA),所以

$xmlstrIn = '<url><![CDATA[http://www.kinguin.net/category/1356/l-a-noire-steam-key/?nosalesbooster=1&country_store=1&currency=EUR]]</url>';
$xmlstrOut = preg_replace('|(\]\])|', 'appendIT$1', $xmlstrIn);

并将$xmlstrOut 发送到您的数据库。

希望这能解决问题(除非您正在研究 SimpleXML 扩展或其他东西)。

问候,

尼克

【讨论】:

  • & 是什么
  • &完全不会受到影响。 'preg_replace' 找到关闭的 ']]' 并插入 'appendIT'。
  • 您能否提供一个指向 嵌套 CDATA 结构示例的链接?我对此非常感兴趣。
  • 这里:&lt;link&gt;&lt;![CDATA[http://www.kinguin.net/category/192/payday-the-heist-eu-steam-key/?nosalesbooster=1&amp;country_store=1&amp;currency=EUR]]&gt;&lt;/link&gt;
猜你喜欢
  • 2012-12-18
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多