0

我有一个对象,它有一些 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。

有谁知道该怎么做?

4

2 回答 2

1

像这样的东西应该工作:

$meta = simplexml_load_string( $object->MetadataXML);
foreach( $meta->two_related_books->book as $book) {
    echo $book->id;
    echo $book->title;
}
于 2012-11-01T20:41:56.917 回答
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
}
于 2012-11-01T20:55:00.633 回答