簡體   English   中英

如何使用SimpleXML和echo將數據從XML提取到PHP?

[英]How can I extract data from XML to PHP using SimpleXML and echo?

我已成功將LinkedIn API與我的網站集成,但我很難從XML中提取信息。 目前我只是想將其打印出來,這樣我就可以在用戶登錄並獲得許可后繼續使用該信息。

下面是XML的格式,下面是我用來提取信息的代碼。 “名字”,“姓氏”和“標題”調用完美無缺,但如果元素有子標題,則不打印任何內容。 我試過用了

echo 'Positions: ' . $xml->{'positions:(title)'};

但它不起作用。

這是XML:

<person>
  <id>
  <first-name />
  <last-name />
<headline>
<location>
  <name>
  <country>
    <code>
  </country>
</location>
<industry>
<summary/>
<positions total="">
  <position>
    <id>
    <title>
    <summary>
    <start-date>
      <year>
      <month>
    </start-date>
    <is-current>
    <company>
      <name>
    </company>
  </position>
</person>

這是我一直在嘗試提取信息的代碼。 我知道我必須以某種方式包括副標題,但我只是不知道如何!

echo 'First Name: ' . $xml->{'first-name'};
echo '<br/>';
echo 'Last Name: ' . $xml->{'last-name'};
echo '<br/>';
echo 'Headline: ' . $xml->{'headline'};
echo '<br/>';
echo 'Positions: ' . $xml->{'positions'};

非常感謝任何幫助,感謝閱讀!

使用SimpleXML,您將訪問LinkedIn XML數據屬性,如下所示:

在屬性中帶有破折號的任何內容都會獲得{} ,因此first-name變為:

$xml->{'first-name'}

沒有像headline這樣的破折號的任何東西都被引用為:

$xml->headline

任何集合的東西,例如positions ,都被引用為:

foreach($xml-positions as $position) {
  echo $position->title;
  echo $position->{'is-current'};
}

您的XML無效,格式不正確。 無論如何,這里有一個示例XML及其使用方法。

$v = <<<ABC
<vitrine>
  <canal>Hotwords</canal>
<product id="0">
    <descricao>MP3 Apple iPod Class...</descricao>
    <loja>ApetreXo.com</loja>

    <preco>&#224; vista R$765,22</preco>
    <urlImagem>http://im</urlImagem>
    <urlProduto>http://</urlProduto>
  </product>
</vitrine>
ABC;

$xml = simplexml_load_string($v);


foreach ($xml->product as $c){    
    echo $c->loja; //echoing out value of 'loja'
}

嘗試了保羅對以上問題的回答:

foreach($xml-positions as $position) {
    echo $position->title;
    echo $position->{'is-current'};
}   

對我不起作用 - 所以我使用了它 - 不是那么優雅而是有效

    for($position_num = 0; $position_num < 10;$position_num++){
        echo $xml->positions->position[$position_num]->company->name;
    }

嘗試改用PHP的XML分析器:

http://www.php.net/manual/en/function.xml-parse.php

您的XML格式不正確......有幾個元素沒有關閉標記。 因此,我們無法確定XML的結構。 (您無法像使用HTML那樣用XML來做到這一點。)

話雖如此,假設<person>是上下文節點,您可以使用XPath表達式獲取<title>元素的內容,如

$xml->xpath('positions/position/title');

我假設$ xml是一個SimpleXMLElement對象。

暫無
暫無

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

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