我有一个对象,它有一些xml元数据作为名为MetadataXML的属性。我需要获取xml标记内的值并将它们存储在php变量中。我已经在这个xml结构上成功了:
[MetadataXML] =>
"<metadata>
<title>A title</titel>
<body>Some text in the body</body>
</metadata>"
使用此代码:
$meta = simplexml_load_string($object->MetadataXML);
$title = (string)$meta->title;
$body = (string)$meta->body;
但现在我有一个xml结构,如下所示:
<metadata>
<two_related_books>
<book>
<id>20</id>
<title>A title</title>
</book>
<book>
<id>55</id>
<title>Another title</title>
</book>
</two_related_books>
</metadata>
我试图以几种不同的方式遍历书籍项目,以某种方式获取每本书的id和title标签内的值。但是在检索任何东西方面都没有成功。我也尝试过使用XPath。
有谁知道怎么做?
答案 0 :(得分:1)
这样的事情应该有效:
$meta = simplexml_load_string( $object->MetadataXML);
foreach( $meta->two_related_books->book as $book) {
echo $book->id;
echo $book->title;
}
答案 1 :(得分:0)
对于这些tash,最好使用DOMDocument和XPath对象。
基础示例:
// Load XML
$dom = new \DOMDocument;
$dom->loadXML($xmlData);
// Create a new XPath object
$domXPath = new \DOMXPath($dom);
$bookItems = $domXpath->evaluate('//book'); // Or "/metadata/two_related_books/book", fot get from root node
// Or
$bookItems = $domDocument->getElementsByTagName('book');
foreach ($bookItems as $item) {
// Here code for control each item
}