我被xml卡住,其中一個節點將所有信息聚集在一起,我需要將它們拆分爲3個獨立的對象。現在它是描述 - 顏色,大小。所以我知道我可以使用-
和,
字符進行分割,然後以這種方式處理它們。我能夠分解描述[0],但現在我很困惑如何抓住分割的[1]和[2]部分。作爲json返回的xml節點的拆分元素
的XML:
<Groups>
<Group>
<Item>
<Description>One Item - Color: Black, Size: 9</Description>
</Item>
</Group>
<Group>
<Item>
<Description>Two Item - Color: White, Size: 11</Description>
</Item>
</Group>
</Groups>
的PHP:
$xml = simplexml_load_string($response);
$items = count($xml->Groups->Group->Item);
for ($i=0;$i<$items;$i++)
{
if ($i) {
$descriptions = $descriptions . '<br>' ;}
$descriptions = $descriptions . $xml->Groups->Group->Item[$i]->Description[0];
$descriptions = preg_split("/-/", $descriptions);
$descriptions = $descriptions[0];
}
$json = '{'. '"Description": "'.$descriptions.'",'.'}';
的
-
,然後又拆分爲
,
我將XML轉換成JSON像這樣的東西之後的部分
然後如果var itemDesc = json.Description;
該變量將返回:
One Item <br> Two Item <br >
接下來的兩個部分我怎麼能那麼從那個分裂。我正在嘗試像這樣的東西:
$color = $descriptions[1];
感謝您的任何幫助!
請不要嘗試手動標記XML或JSON,或者生成 - 使用正確的XML解析器,JSON編寫器;否則你最終會丟失編碼(某些內容突然失效)。有很多庫用於處理PHP,只需使用低級別的庫,實現轉換邏輯 – StaxMan
感謝您的評論。你能否提供一些進一步的閱讀?我真的不明白你想告訴我什麼。 – Zac
我重新讀取代碼,所以你正確使用simple-xml解析器,所以這很好(我誤以爲它使用正則表達式)。但是我認爲你應該考慮的是使用JSON編寫器/生成器包來格式化輸出:這將允許您使用JSON數組(而不是使用逗號分隔值的String),這使得客戶端更容易。它還將確保字符如雙引號和換行符在JSON字符串中轉義:如果它們不是,則結果是無效的JSON。 – StaxMan