PHP 使用 SimpleXML 处理命名空间

标签 php xml namespaces xml-namespaces

我真的需要使用命名空间的帮助。如何让以下代码正常工作?

<?php
$mytv = simplexml_load_string(
'<?xml version="1.0" encoding="utf-8"?>
 <mytv>
    <mytv:channelone>
        <mytv:description>comedy that makes you laugh</mytv:description>
    </mytv:channelone>
 </mytv>'
);

foreach ($mytv as $mytv1)
{
    echo 'description: ', $mytv1->children('mytv', true)->channelone->description;
}
?>

我要做的就是获取 name 元素中的内容。

最佳答案

当你使用 xml 中的命名空间时,你应该定义你使用的命名空间..!在我发布的代码中,您可以看到如何定义正在使用的命名空间。

您需要显示特定于命名空间的描述是不是..?如果我错了,请纠正我。请正确发布您的目的,以便我了解您的问题。

使用此代码,看看你是否能得到一些想法..

$xml ='<mytv>
 <mytv:channelone xmlns:mytv="http://mycompany/namespaces/mytvs">
    <mytv:description >comedy that makes you laugh</mytv:description>
 </mytv:channelone>
</mytv>';

$xml = simplexml_load_string($xml);

$doc = new DOMDocument();  
$str = $xml->asXML(); 
$doc->loadXML($str); 

$bar_count = $doc->getElementsByTagName("description");

foreach ($bar_count as $node) 
{   
echo $node->nodeName." - ".$node->nodeValue."-".$node->prefix. "<br>";
}

在这里,值“$node->prefix”将是包含“description”的标签的命名空间。

getElementsByTagName("description") 用于获取包含描述的 xml 中的所有元素作为标签......!!然后稍后使用“$node->prefix”与您需要的特定命名空间进行比较,然后打印..

关于PHP 使用 SimpleXML 处理命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8275643/

相关文章:

javascript - CKEditor 无法解析 JSON 响应

xml - Xpath如何根据顺序选择元素并依赖于它的存在

xml - 如何使用 xsl-fo 页脚和页眉生成 pdf?

java - 根据选择的微调器值生成纯文本字段?

javascript - Typescript - 将命名空间导入另一个命名空间

php - 按输入类型 ="file"将表从 xls 文件插入数据库

php - MySQL INSERT IGNORE INTO 不断添加重复条目

php - 如何使生成的代码在输入几次后过期(PHP)?

C++ : extern variable inside namespace and printf vs cout

linux - LXC 容器内的内核模块