PHP:当我在 xml 中转换时出现问题

我希望我的 arElemt(gurl 和 gname) 放入 . 示例和问题 2 = 当我写 g:url 或 g:name = Error... php7.2* 现在示例现在我有了这个结构

-RSS

- -标题

- -关联

- -描述

---古尔

---gname

我想现在我有这个结构

-RSS

- -标题

- -关联

- -描述

---古尔

---gname

---古尔

---gname

---古尔

---我想要的gname

-RSS

- -标题

- -关联

- -描述

- -物品

-----古尔

-----gname

- -物品

-----古尔

-----gname

- -物品

-----古尔

-----gname

- -物品

-----古尔

-----gname

 header("Content-type: text/xml; charset=utf-8");

    $dom = new DOMDocument('1.0','utf-8');

    $root = $dom->createElement('rss');

    $dom->appendChild($root);



    $title = $dom->createElement('title', 'test');

    $root->appendChild($title );


    $link = $dom->createElement('link', 'test');

    $root->appendChild($link );


    $description = $dom->createElement('description', 'test');

    $root->appendChild($description );



$root = $item->createElement('item');


while($arElement = $rsElements->GetNext())

{

    $url = $dom->createElement("gurl", $surl.$arElement[DETAIL_PAGE_URL]);

    $item->appendChild($url );


    $name = $dom->createElement("gname", $arElement[NAME]);

    $root->appendChild($name );


}

   echo $dom->saveXML();

    $dom->save($file_name); // save as file


浮云间
浏览 131回答 1
1回答

波斯汪

这是gurl和之间的一个很大区别g:url。gurl不是有效的 RSS 标签&nbsp;afaik。g:url是已url定义命名空间内的元素。在g从g:url一个命名空间前缀。它引用了命名空间定义。xmlns:g在示例中查找属性或在格式文档中查找名称空间 URI。的g是该属性的值的别名。解析器在内部将其解析为 URI。以下所有节点都可以读作{urn:example:namespace}url.<g:url xmlns:g="urn:example:namespace"/><g2:url xmlns:g2="urn:example:namespace"/><url xmlns="urn:example:namespace"/>RSS 本身只是格式良好的 XML,它不使用命名空间。但它可以包含使用名称空间的其他 XML 格式(MediaRSS,...)。要创建具有命名空间的元素,请使用方法DOMDocument::createElementNS()。如果需要,这将自动添加命名空间定义。但是,如果不使用文档元素的命名空间,它将被添加多次。您可以将命名空间定义设置为保留的 XMLNS 命名空间的属性。$data = ['one', 'two'];// the namespace for namespace definitionsconst XMLNS_XMLNS = 'http://www.w3.org/2000/xmlns/';// namespace referenced by prefix g?const XMLNS_G = 'urn:example:namespace';$document = new DOMDocument('1.0','utf-8');$rss = $document->appendChild(&nbsp; &nbsp; $document->createElement('rss'));// add the namespace definition to the document element$rss->setAttributeNS(XMLNS_XMLNS, 'xmlns:g', XMLNS_G);// create + append element node, set its text content$rss->appendChild(&nbsp; &nbsp; $document->createElement('title'))->textContent = 'test';foreach ($data as $value) {&nbsp; &nbsp; $item = $rss->appendChild(&nbsp; &nbsp; &nbsp; &nbsp; $document->createElement('item')&nbsp; &nbsp; );&nbsp; &nbsp; // create and append an element with the namespace&nbsp; &nbsp; $item->appendChild(&nbsp; &nbsp; &nbsp; &nbsp; $document->createElementNS(XMLNS_G, 'g:url')&nbsp; &nbsp; )->textContent = 'http://example.com/page?'.$value;}$document->formatOutput = TRUE;echo $document->saveXML();输出:<?xml version="1.0" encoding="utf-8"?><rss xmlns:g="urn:example:namespace">&nbsp; <title>test</title>&nbsp; <item>&nbsp; &nbsp; <g:url>http://example.com/page?one</g:url>&nbsp; </item>&nbsp; <item>&nbsp; &nbsp; <g:url>http://example.com/page?two</g:url>&nbsp; </item></rss>提示 1:DOMNode::appendChild()返回附加的节点。可以嵌套创建调用。提示 2:DOMNode::$textContent允许读取/写入节点的文本内容并正确转义。
打开App,查看更多内容
随时随地看视频慕课网APP