Ben gibi bir xml parçası var:
<meta_tree type="root">
<meta_data>
<meta_cat>Content Provider</meta_cat>
<data>Mammoth</data>
</meta_data>
<meta_data>
<meta_cat>Genre</meta_cat>
<data>Games</data>
</meta_data>
<meta_data>
<meta_cat>Channel Name</meta_cat>
<data>Games Trailers</data>
</meta_data>
<meta_data>
<meta_cat>Collection</meta_cat>
<data>Strategy</data>
</meta_data>
<meta_data>
<meta_cat>Custom 1</meta_cat>
<data>PC</data>
</meta_data>
<meta_data>
<meta_cat>DRM Protected</meta_cat>
<data>N</data>
</meta_data>
<meta_data>
<meta_cat>Aspect Ratio</meta_cat>
<data>16:9</data>
</meta_data>
<meta_data>
<meta_cat>Streaming Type</meta_cat>
<data>VOD</data>
</meta_data>
</meta_tree>
Ben parçacığını topladı ki $meta_tree->asXML()
.
Yani verilen, ben her eleman için bir XPath sorgusu olması gerekir, bu yüzden ben kullanıyorum:
$meta_tree->xpath("/meta_data[meta_cat='Content Provider']");
ama bu yanlış döndürür.
Ben denedim:
/meta_tree/meta_data[meta_cat='Content Provider']
//meta_data[meta_cat='Content Provider']
meta_data[meta_cat='Content Provider']
(bu bir dizi döndürür, ancak dizi boştur)
Ben sorguyu doğrular ki, AquaPath kullanarak oldum, ben yanlış yapıyorum emin değilim.
Herkes herhangi bir fikir var mı?
DJS.
EDIT: Tolomak önerisine göre, burada biraz daha fazla bilgi var.
Aşağıdaki gibi elemanın (isimleri ile değiştirilmiştir * masum korumak için), daha büyük bir dokümanın bir parçası olduğu:
<contents total_items="1" xmlns="http://rxml.***.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://rxml.***.com/xsd/*Ingestion.xsd ">
<content item_id="451195">
...
<meta_tree type="root">
... see snippet above ...
</meta_tree>
</content>
</contents>
Ben yukarıda fragmanı almak:
$dom = new SimpleXMLElement(... xml_string ... );
foreach($dom->content as $content)
{
$contentMetadata = $this->getMetadata($content->meta_tree)
}
public function getMetadata($meta_tree)
{
echo $meta_tree->asXML();
}
ANSWER: sorun varsayılan ad oldu. Herkes SimpleXMLElement xmlns varsayılan ad kaydetmek için nasıl bilir sürece, yerine ad ile anlaşma daha onları dışarı atmak için seçtiniz.