簡體   English   中英

加載標記文件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;

https://3v4l.org/0bcfj

在根元素周圍使用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/>";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM