簡體   English   中英

php解析XML標記內獲得的字符串

[英]php parse the string obtained inside the XML tag

最近,我不得不做一個api調用,它返回了XML響應。 但是,這似乎是一個奇怪的XML,它只有1個基本標記,而所有其他信息都在此基本標記內以字符串形式給出。 我需要獲取每個字符串標簽的值,但不知道如何實現。

下面給出的是從api接收的示例響應。

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://webservices/api/v1/Inventory.asmx">
&lt;NewDataSet&gt;
    &lt;Table&gt;
        &lt;ITEMNO&gt;120&lt;/ITEMNO&gt;
        &lt;IDESC&gt;BERG 22423 BULL .224 90GR VLD TGT  100&lt;/IDESC&gt;
        &lt;IMFSEQ&gt;570&lt;/IMFSEQ&gt;
        &lt;IMFGNO&gt;628&lt;/IMFGNO&gt;
        &lt;CSEQ&gt;0&lt;/CSEQ&gt;
        &lt;ITYPE&gt;7&lt;/ITYPE&gt;
        &lt;SHDESC&gt;Berger Bullets 22423 Target 22 Caliber .224 90 GR Target Very Low Drag 100 Box                                                                                                                          &lt;/SHDESC&gt;
        &lt;UOM&gt;EA&lt;/UOM&gt;
        &lt;PRC1&gt;34.73&lt;/PRC1&gt;
        &lt;CPRC&gt;34.04&lt;/CPRC&gt;
        &lt;QTYOH&gt;26&lt;/QTYOH&gt;
        &lt;WTPBX&gt;1.400&lt;/WTPBX&gt;
        &lt;ITUPC&gt;679459224239   &lt;/ITUPC&gt;
        &lt;MFGINO&gt;22423       &lt;/MFGINO&gt;
        &lt;SCNAM1&gt;BERG   &lt;/SCNAM1&gt;
        &lt;SCNAM2&gt;B22CAL &lt;/SCNAM2&gt;
        &lt;CATCD xml:space="preserve"&gt; &lt;/CATCD&gt;
        &lt;MFPRTYP xml:space="preserve"&gt; &lt;/MFPRTYP&gt;
        &lt;MFPRC&gt;0.00&lt;/MFPRC&gt;
        &lt;CATID&gt;36&lt;/CATID&gt;
        &lt;TXTREF&gt;120&lt;/TXTREF&gt;
        &lt;PICREF&gt;120&lt;/PICREF&gt;
        &lt;ITBRDNO&gt;628&lt;/ITBRDNO&gt;
        &lt;SERIES&gt;Match Grade                                                                                                                                                                                             &lt;/SERIES&gt;
        &lt;LENGTH&gt;4.1&lt;/LENGTH&gt;
        &lt;HEIGHT&gt;1.2&lt;/HEIGHT&gt;
        &lt;WIDTH&gt;3.3&lt;/WIDTH&gt;
        &lt;HAZAIR xml:space="preserve"&gt; &lt;/HAZAIR&gt;
        &lt;HAZGRND xml:space="preserve"&gt; &lt;/HAZGRND&gt;
        &lt;CHGDTE&gt;2018-05-23T00:00:00+00:00&lt;/CHGDTE&gt;
        &lt;LOADDT&gt;2015-11-05T00:00:00+00:00&lt;/LOADDT&gt;
    &lt;/Table&gt;
&lt;/NewDataSet&gt;
</string>

我嘗試了以下方法,但似乎無法按需工作

<?php
$xml=simplexml_load_string($myXMLData);
print_r($xml);

$xml = new SimpleXMLElement($myXMLData);
print_r($xml);
?>

尋找的是獲取響應中每個標簽的值。 任何幫助深表感謝。

您可以利用html_entity_decode將您的字符串轉換為正確的XML:

$xml = new SimpleXMLElement(html_entity_decode($myXMLData));
print_r($xml);

演示在這里: https : //3v4l.org/AWWEH

您在另一個XML文檔中有一個XML文檔作為文本。 因此,您必須加載外部文檔,獲取文本內容,然后再次將其解析為XML:

$xml = <<<'XML'
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://webservices/api/v1/Inventory.asmx">
&lt;NewDataSet&gt;
    &lt;Table&gt;
        &lt;ITEMNO&gt;120&lt;/ITEMNO&gt;
        &lt;IDESC&gt;BERG 22423 BULL .224 90GR VLD TGT  100&lt;/IDESC&gt;
    &lt;/Table&gt;
&lt;/NewDataSet&gt;
</string>
XML;

$stringElement = new SimpleXMLELement($xml);
echo $stringElement, "\n";

// force to string and parse as XML
$newDataSet = new SimpleXMLElement((string)$stringElement);
echo $newDataSet->Table->ITEMNO;

輸出:

<NewDataSet>
  <Table>
    <ITEMNO>120</ITEMNO> 
    <IDESC>BERG 22423 BULL .224 90GR VLD TGT 100</IDESC>
  </Table> 
</NewDataSet> 

120

暫無
暫無

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

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