dimanche 26 mai 2019

What is the easiest way to parse this XML in straight PHP or do I need a spcial object

I have to parse a lot of XML throughout the day to obtain node and attribute values from this very small example of a single market for a single race at a track that day. So there could be 30+ tracks (worldwide), 8 races per track at different times, and 2 - 40 runners at each market. Plus I am only outputting the WIN market here. There could be a PLACE market a PLACE 5 Spots market and many others.

Sorry for any formatting issues

<?xml version="1.0" encoding="utf-8"?><root ID="1"><SPORT NAME="Horse Racing" ID="100004"><EVENT NAME="UK Racing" ID="190538"><SUBEVENT NAME="Perth (26th April 2019)" ID="5990925" DATE="2019-04-25 23:01:00"><SUBEVENT1 NAME="13:30 Perth" ID="5990926" DATE="2019-04-26 12:30:00"><MARKET NAME="Win Market" ID="15346430" ODDS_SYSTEM="BL"><LINK URL="https://www.betdaq.com/exchange/Horse-Racing-13-30-Perth/5990926/15346430" MOBILE_URL="https://mobile03.betdaq.com/#market?mId=15346430" /><SELECTION NAME=" 3 Vision Du Puy" ID="97698108"><OUTCOME NAME="|BACK|  3 Vision Du Puy"><ODDS POLARITY="BACK"><PRICE VALUE="1.54"><AMOUNT CURRENCY="USD" VALUE="6" /><AMOUNT CURRENCY="GBP" VALUE="4" /><AMOUNT CURRENCY="EUR" VALUE="5" /></PRICE><PRICE VALUE="1.53"><AMOUNT CURRENCY="USD" VALUE="73" /><AMOUNT CURRENCY="GBP" VALUE="56" /><AMOUNT CURRENCY="EUR" VALUE="65" /></PRICE><PRICE VALUE="1.52"><AMOUNT CURRENCY="USD" VALUE="38" /><AMOUNT CURRENCY="GBP" VALUE="29" /><AMOUNT CURRENCY="EUR" VALUE="34" /></PRICE></ODDS></OUTCOME><OUTCOME NAME="|LAY|  3 Vision Du Puy"><ODDS POLARITY="LAY"><PRICE VALUE="1.58"><AMOUNT CURRENCY="USD" VALUE="3" /><AMOUNT CURRENCY="GBP" VALUE="3" /><AMOUNT CURRENCY="EUR" VALUE="3" /></PRICE><PRICE VALUE="1.60"><AMOUNT CURRENCY="USD" VALUE="14" /><AMOUNT CURRENCY="GBP" VALUE="11" /><AMOUNT CURRENCY="EUR" VALUE="13" /></PRICE><PRICE VALUE="1.61"><AMOUNT CURRENCY="USD" VALUE="4" /><AMOUNT CURRENCY="GBP" VALUE="3" /><AMOUNT CURRENCY="EUR" VALUE="4" /></PRICE></ODDS></OUTCOME></SELECTION><SELECTION NAME=" 1 Edene D'Arc" ID="97698109"><OUTCOME NAME="|BACK|  1 Edene D'Arc"><ODDS POLARITY="BACK"><PRICE VALUE="3.10"><AMOUNT CURRENCY="USD" VALUE="138" /><AMOUNT CURRENCY="GBP" VALUE="107" /><AMOUNT CURRENCY="EUR" VALUE="124" /></PRICE><PRICE VALUE="3.05"><AMOUNT CURRENCY="USD" VALUE="46" /><AMOUNT CURRENCY="GBP" VALUE="35" /><AMOUNT CURRENCY="EUR" VALUE="41" /></PRICE><PRICE VALUE="3.00"><AMOUNT CURRENCY="USD" VALUE="18" /><AMOUNT CURRENCY="GBP" VALUE="14" /><AMOUNT CURRENCY="EUR" VALUE="17" /></PRICE></ODDS></OUTCOME><OUTCOME NAME="|LAY|  1 Edene D'Arc"><ODDS POLARITY="LAY"><PRICE VALUE="3.30"><AMOUNT CURRENCY="USD" VALUE="16" /><AMOUNT CURRENCY="GBP" VALUE="13" /><AMOUNT CURRENCY="EUR" VALUE="15" /></PRICE><PRICE VALUE="3.35"><AMOUNT CURRENCY="USD" VALUE="18" /><AMOUNT CURRENCY="GBP" VALUE="13" /><AMOUNT CURRENCY="EUR" VALUE="16" /></PRICE><PRICE VALUE="3.45"><AMOUNT CURRENCY="USD" VALUE="16" /><AMOUNT CURRENCY="GBP" VALUE="13" /><AMOUNT CURRENCY="EUR" VALUE="15" /></PRICE></ODDS></OUTCOME></SELECTION><SELECTION NAME=" 2 Off The Hook" ID="97698110" WITHDRAWN="TRUE"><OUTCOME NAME="|BACK|  2 Off The Hook"><ODDS POLARITY="BACK" /></OUTCOME><OUTCOME NAME="|LAY|  2 Off The Hook"><ODDS POLARITY="LAY" /></OUTCOME></SELECTION><SELECTION NAME=" 6 West Coast Lass" ID="97698111"><OUTCOME NAME="|BACK|  6 West Coast Lass"><ODDS POLARITY="BACK"><PRICE VALUE="31.00"><AMOUNT CURRENCY="USD" VALUE="11" /><AMOUNT CURRENCY="GBP" VALUE="8" /><AMOUNT CURRENCY="EUR" VALUE="10" /></PRICE><PRICE VALUE="28.00"><AMOUNT CURRENCY="USD" VALUE="14" /><AMOUNT CURRENCY="GBP" VALUE="11" /><AMOUNT CURRENCY="EUR" VALUE="13" /></PRICE><PRICE VALUE="27.00"><AMOUNT CURRENCY="USD" VALUE="9" /><AMOUNT CURRENCY="GBP" VALUE="7" /><AMOUNT CURRENCY="EUR" VALUE="8" /></PRICE></ODDS></OUTCOME><OUTCOME NAME="|LAY|  6 West Coast Lass"><ODDS POLARITY="LAY"><PRICE VALUE="37.00"><AMOUNT CURRENCY="USD" VALUE="2" /><AMOUNT CURRENCY="GBP" VALUE="2" /><AMOUNT CURRENCY="EUR" VALUE="2" /></PRICE><PRICE VALUE="42.00"><AMOUNT CURRENCY="USD" VALUE="4" /><AMOUNT CURRENCY="GBP" VALUE="3" /><AMOUNT CURRENCY="EUR" VALUE="3" /></PRICE><PRICE VALUE="43.00"><AMOUNT CURRENCY="USD" VALUE="4" /><AMOUNT CURRENCY="GBP" VALUE="3" /><AMOUNT CURRENCY="EUR" VALUE="3" /></PRICE></ODDS></OUTCOME></SELECTION><SELECTION NAME=" 4 Fig's Pride" ID="97698112"><OUTCOME NAME="|BACK|  4 Fig's Pride"><ODDS POLARITY="BACK"><PRICE VALUE="116.00"><AMOUNT CURRENCY="USD" VALUE="6" /><AMOUNT CURRENCY="GBP" VALUE="4" /><AMOUNT CURRENCY="EUR" VALUE="5" /></PRICE><PRICE VALUE="110.00"><AMOUNT CURRENCY="USD" VALUE="1" /><AMOUNT CURRENCY="GBP" VALUE="1" /><AMOUNT CURRENCY="EUR" VALUE="1" /></PRICE><PRICE VALUE="108.00"><AMOUNT CURRENCY="USD" VALUE="9" /><AMOUNT CURRENCY="GBP" VALUE="7" /><AMOUNT CURRENCY="EUR" VALUE="8" /></PRICE></ODDS></OUTCOME><OUTCOME NAME="|LAY|  4 Fig's Pride"><ODDS POLARITY="LAY" /></OUTCOME></SELECTION><SELECTION NAME=" 5 Sueno Toms" ID="97698113"><OUTCOME NAME="|BACK|  5 Sueno Toms"><ODDS POLARITY="BACK"><PRICE VALUE="1000.00"><AMOUNT CURRENCY="USD" VALUE="350" /><AMOUNT CURRENCY="GBP" VALUE="271" /><AMOUNT CURRENCY="EUR" VALUE="314" /></PRICE><PRICE VALUE="995.00"><AMOUNT CURRENCY="USD" VALUE="2" /><AMOUNT CURRENCY="GBP" VALUE="1" /><AMOUNT CURRENCY="EUR" VALUE="2" /></PRICE><PRICE VALUE="975.00"><AMOUNT CURRENCY="USD" VALUE="6" /><AMOUNT CURRENCY="GBP" VALUE="4" /><AMOUNT CURRENCY="EUR" VALUE="5" /></PRICE></ODDS></OUTCOME><OUTCOME NAME="|LAY|  5 Sueno Toms"><ODDS POLARITY="LAY" /></OUTCOME></SELECTION></MARKET></SUBEVENT1></SUBEVENT></EVENT></SPORT></root>

I thought maybe the editor would recognise XML.

I am used to basic xml parsing but is it better to use pure PHP to do it or some plugin like SimplePie or another 3rd party object.

I just want to make it easy for me to get for every selection (horse) running in the race (this just shows one race and the WIN market), and also their 3 prices under <ODDS POLARITY="BACK"> and <ODDS POLARITY="LAY"> the rest of it would be useful to get e.g the time, course name, Market ID, horse name etc under <SELECTION NAME="3 Vision Du Puy" ID="97698108"> I am used to getting the node value but I'd like a simple object I could create that would contain the race, course, time,list of runners and under each runner their 3 back and 3 lay prices, which I could then save to the DB.

Thanks for any help in advance




Aucun commentaire:

Enregistrer un commentaire