我有一个XML文件,想获取<arquivo>
标记中的值
<Listings>
<Listing>
<id>1</id>
<endereco>abc</endereco>
<Media>
<foto>
<arquivo>foto1.jpg</arquivo>
</foto>
<foto>
<arquivo>foto2.jpg</arquivo>
</foto>
</Media>
</Listing>
<Listing>
<id>2</id>
<endereco>rua X</endereco>
<Media>
<foto>
<arquivo>...</arquivo>
</foto>
<foto>
<arquivo>...</arquivo>
</foto>
</Media>
</Listing>
</Listings>
但是我不确定我的PHP有什么问题
$listings = simplexml_load_file("file.xml");
foreach ($listings as $listing):
echo 'endereco: ' . trim($listing->endereco) . "<br>";
foreach($listing->Media as $items):
foreach($items as $item):
echo 'Image: ' . trim($item) . "<br>";
endforeach;
endforeach;
endforeach;
我的代码的结果是
endereco: abc
Imagem:
Imagem:
endereco: rua X
Imagem:
Imagem:
但我希望是这样
endereco: abc
Imagem: foto1.jpg
Imagem: foto2.jpg
endereco: rua X
Imagem: ...
Imagem: ...
答案 0 :(得分:2)
您需要像在enderco
中那样输入结构的每个级别。看看:
$x = new simplexmlelement('<Listings>
<Listing>
<id>1</id>
<endereco>abc</endereco>
<Media>
<foto>
<arquivo>foto1.jpg</arquivo>
</foto>
<foto>
<arquivo>foto2.jpg</arquivo>
</foto>
</Media>
</Listing></Listings>');
foreach ($x as $listing):
echo 'endereco: ' . trim($listing->endereco) . "<br>";
foreach($listing->Media as $items):
foreach($items->foto as $foto):
echo 'Image: ' . trim($foto->arquivo) . "<br>";
endforeach;
endforeach;
endforeach;
答案 1 :(得分:1)
在根元素周围使用foreach循环,然后使用XPath查询来更轻松地访问内部元素。仍然具有两个foreach循环的技巧,但应该可以正常工作。
<?php
$listings = simplexml_load_file("file.xml");
foreach ($listings as $listing) {
echo "endereco: $listing->endereco<br/>";
$arquivos = $listing->xpath("Media/foto/arquivo");
foreach ($arquivos as $ar) {
echo "Imagem: $ar<br/>";
}
}