gpt4 book ai didi

php - 使用 PHP 在 XML 子元素名称中包含冒号

转载 作者:数据小太阳 更新时间:2023-10-29 03:02:42 26 4
gpt4 key购买 nike

我正在尝试让我的站点地图在添加页面时自动更新。我正在定义包含我需要的子名称的 var,其中包括一个冒号字符。 PHP 或 XML 正在删除其右侧或左侧的冒号和单词。如何在子元素名称中保留该冒号?

我正在使用这个:

<?php
$imagechild = 'image:image';
$imageloc = 'image:loc';

$xml=simplexml_load_file("sitemap.xml");

$map = $xml->addChild('url');
$map->addChild('loc', "http:/some website".$page_path);

$img = $map->addChild($imagechild);
$img->addChild($imageloc, $img_link);

$xml->saveXML('sitemap.xml');
?>

我明白了:

      <url>
<loc>web url</loc>
<image>
<loc>image url</loc>
</image>
</url>

我需要这个

      <url>
<loc>web url</loc>
<image:image>
<loc>image url</loc>
</image:image>
</url>

提前致谢!

最佳答案

如果元素名称包含 :,则 : 之前的部分是 namespace 前缀。如果您使用命名空间前缀,那么您需要在文档中的某处定义命名空间。

查看SimpleXmlElement::addChild()的手册.您需要将 namespace uri 作为第三个元素传递才能使其工作:

$img = $map->addChild($imagechild, '',  'http://your.namspace.uri/path');

我鼓励您使用 DOMDocument 类来支持 simple_xml 扩展。它可以更恰本地处理命名空间。检查这个例子:

假设您有这个 xml:

<?xml version="1.0"?>
<map>
</map>

还有这段 PHP 代码:

$doc = new DOMDocument();
$doc->load("sitemap.xml");

$map = $doc->documentElement;

// Define the xmlns "image" in the root element
$attr = $doc->createAttribute('xmlns:image');
$attr->nodeValue = 'http://your.namespace.uri/path';
$map->setAttributeNode($attr);

// Create new elements
$loc = $doc->createElement('loc', 'your location comes here');
$image = $doc->createElement('image:image');
$imageloc = $doc->createElement('loc', 'your image location comes here');

// Add them to the tree
$map->appendChild($loc);
$image->appendChild($imageloc);
$map->appendChild($image);

// Save to file
file_put_contents('sitemap.xml', $doc->saveXML());

你会得到这样的输出:

<?xml version="1.0"?>
<map xmlns:image="http://your.namespace.uri/path">
<loc>your location comes here</loc>
<image:image>
<loc>your image location comes here</loc>
</image:image>
</map>

关于php - 使用 PHP 在 XML 子元素名称中包含冒号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22844088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com