加载标记文件 xml PHP
Load tag file xml PHP
我有一个 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: ...
您需要像 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;
在根元素周围使用 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/>";
}
}
我有一个 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: ...
您需要像 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;
在根元素周围使用 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/>";
}
}