gpt4 book ai didi

php - 使用 SimpleXML 解析 PHP 中嵌套的 XML/RDF 命名空间元素

转载 作者:行者123 更新时间:2023-12-04 18:24:06 25 4
gpt4 key购买 nike

给定下面的 XML/RDF 示例 from the W3C网站,如何访问“cd”命名空间中的值?

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
<cd:artist>Bob Dylan</cd:artist>
<cd:country>USA</cd:country>
<cd:company>Columbia</cd:company>
<cd:price>10.90</cd:price>
<cd:year>1985</cd:year>
</rdf:Description>

</rdf:RDF>

我尝试过执行以下操作:
$XML = new SimpleXMLElement($rawXML); // Assume $rawXML is the quoted XML/RDF above
foreach($xml as $entry){
$cd = $entry->children('http://www.recshop.fake/cd#');
echo $cd->artist;
echo $cd->$country;
...
}

我也尝试过:
$XML = new SimpleXMLElement($rawXML); // Assume $rawXML is the quoted XML/RDF above
foreach($xml as $entry){
$cd = $entry->children('http://www.recshop.fake/cd#');
$rdf = $entry->children('http://www.w3.org/1999/02/22-rdf-syntax-ns#');
echo $rdf->$cd->artist;
echo $rdf->$cd->$country;
...
}

此外,在 PHP 中是否有必要做任何不同的事情,而不是声明 xmlns:cd="http://www.recshop.fake/cd#"xmlns="http://www.recshop.fake/cd#"并且“cd”命名空间已从 <cd:artist> 中删除, ETC。

最佳答案

您不应该使用 XML 解析器来读取 rdf/xml,因为它不理解将 RDF 三元组写入 XML 的编码;有多种方法可以写下其中一个术语,例如 cd:artist .这就像在 JSON 数据上使用正则表达式一样——它可能会起作用,但它不会捕获所有情况。使用 XML 方法,您最终会产生误解。我建议您使用 https://github.com/semsol/arc2 中的解析器

XML 方法可行的唯一方法是保证生成的 XML 始终使用相同的模板编写。例如,XMP 文档元数据就是这种情况。

关于php - 使用 SimpleXML 解析 PHP 中嵌套的 XML/RDF 命名空间元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066198/

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