如何使用DOMDocument </xhtml:link>创建<xhtml:link ... =“”>

时间:2014-08-08 11:46:44

标签: domdocument

使用DOMDocument创建站点地图,一切正常。现在我想创建多语言。如何在以下代码中创建xhtml:link元素?

<url>
  <loc>http://www.ihremusterdomain.de/english/</loc>
  <xhtml:link rel="alternate" hreflang="de" href="http://www.ihremusterdomain.de/deutsch/" />
  <lastmod>2014-04-15T16:13:34+02:00</lastmod>
  <changefreq>daily</changefreq>
</url>

其他元素如url,loc,lastmod和changefreq仍然存在。

2 个答案:

答案 0 :(得分:0)

因为节点在XHTML命名空间中,所以您需要使用createElementNS来添加它:

<?php

$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
$doc->load('sitemap.xml');

foreach ($doc->getElementsByTagName('loc') as $loc) {
  $node = $doc->createElementNS('http://www.w3.org/1999/xhtml', 'xhtml:link');
  $node->setAttribute('rel', 'alternate');
  $node->setAttribute('hreflang', 'de');
  $node->setAttribute('href', str_replace('english', 'deutsch', $loc->textContent));

  if ($loc->nextSibling) {
    $loc->parentNode->insertBefore($node, $loc->nextSibling);
  } else {
    $loc->parentNode->appendChild($node);
  }
}

$doc->formatOutput = true;
$doc->save('output.xml');

答案 1 :(得分:0)

在C#中,您可以这样做:

var linkElement = document.CreateElement("xhtml:link", "http://www.w3.org/1999/xhtml"); 

您需要提供完整限定名称以及名称空间uri。