Reputation: 909
Im looking for an answer for DAYS! and I haven't found any.. :( here is my XML sample:
<?xml version="1.0" encoding="UTF-8"?>
<Businesses>
<Business NAME="Bus1">
<DEAL ID="2">
<title>My first Title</Title>
</DEAL>
<DEAL ID="4">
<title>My Second Title</Title>
</DEAL>
</Business>
<Business NAME="Bus2">
<DEAL ID="2">
<title>My 2nd Title</Title>
</DEAL>
<DEAL ID="5">
<title>My last Title</Title>
</DEAL>
</Business>
<Businesses>
How can i parse this xml one business by one?? Here is my code:
<?php
$doc = new domDocument();
$doc->load("MyXML.xml"); //(The XML Above)
$Businesses = $doc->documentElement;
$ebus = $Businesses->childNodes;
foreach ($ebus as $business) {
if ($business instanceof domElement) {
$busname=$business->getAttribute('NAME');
$shelves = $Businesses->getElementsByTagName("DEAL"); //HERE IS THE PROBLEM
foreach ($shelves as $deal) {
//Here i have all of the Businesses (I need to present only the first "NAME='Bus1'") for the first iteration! and so on..
}}}
?>
The issue is that "getElementsByTagName" bring all "DEAL" nodes althoug I'm inside foreach of the first business!!
I Tried: $shelves = $Businesses->childNodes; // But it's Not Correct
Thank you for your Help!!
Upvotes: 1
Views: 1367
Reputation: 140228
You are calling it on $Businesses
which is documentElement
. You assigned it at the start:
$Businesses = $doc->documentElement;
Try this:
$shelves = $business->getElementsByTagName("DEAL");
Upvotes: 2