如何在php中提取XML数据

时间:2015-07-31 07:58:30

标签: php xml

以下是我作为原始数据获取的XML数据:

<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:f="http://xmlns.api.com/opensearch/1.0" xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:age="http://purl.org/atompub/age/1.0" xmlns:api="http://xmlns.api.com/atom-ad-extensions/1.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:app="http://www.w3.org/2007/app" xmlns:georss="http://www.georss.org/georss">
    <id>EnNsvJjvfOER23Q1uwNmMSppt80rJK</id>
    <title>Used cars</title>
    <subtitle>Some awesome desc.</subtitle>
    <updated>2015-07-29T10:31:31.737Z</updated>
    <author>
        <name>Me</name>
    </author>
    <link href="https://example.com&amp;sort=0" rel="self"/>
    <link href="https://example.com&amp;sort=0" rel="first"/>
    <link href="https://example.com&amp;sort=0&amp;page=4" rel="last"/>
    <link href="https://example.com&amp;sort=0&amp;page=2" rel="next"/>
    <link href="https://example.com&amp;sort=0&amp;rows=1" rel="promoted"/>
    <link href="https://example.com/description" rel="search" type="application/opensearchdescription+xml"/>
    <category scheme="urn:api:search:type" label="Used cars" term="car-eu"/>
    <f:filter name="brand" title="Brand" range="false">
        <f:Query role="subset" totalResults="1" f:filter="0.3233" title="Alfa Romeo">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.3233.3730" title="156"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="7" f:filter="0.744" title="Audi">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="2" f:filter="1.744.2046" title="A3"/>
                <f:Query role="subset" totalResults="3" f:filter="1.744.839" title="A4"/>
                <f:Query role="subset" totalResults="2" f:filter="1.744.840" title="A6"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="11" f:filter="0.749" title="BMW">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.749.7967" title="1-serie"/>
                <f:Query role="subset" totalResults="4" f:filter="1.749.2132" title="3-serie"/>
                <f:Query role="subset" totalResults="3" f:filter="1.749.2131" title="5-serie"/>
                <f:Query role="subset" totalResults="1" f:filter="1.749.2000133" title="X1"/>
                <f:Query role="subset" totalResults="2" f:filter="1.749.7798" title="X3"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="1" f:filter="0.752" title="Cadillac"/>
        <f:Query role="subset" totalResults="12" f:filter="0.753" title="Chevrolet">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.753.1486" title="Captiva"/>
                <f:Query role="subset" totalResults="4" f:filter="1.753.912" title="Corvette"/>
                <f:Query role="subset" totalResults="1" f:filter="1.753.2000233" title="Cruze"/>
                <f:Query role="subset" totalResults="2" f:filter="1.753.7540" title="Silverado"/>
                <f:Query role="subset" totalResults="1" f:filter="1.753.2000179" title="Spark"/>
                <f:Query role="subset" totalResults="1" f:filter="1.753.4338" title="Tahoe"/>
                <f:Query role="subset" totalResults="2" f:filter="1.753.2000254" title="Trax"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="2" f:filter="0.764" title="Dodge">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.764.3797" title="RAM"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="1" f:filter="0.771" title="Honda">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.771.1088" title="Civic"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="2" f:filter="0.7179" title="Isuzu">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="2" f:filter="1.7179.2000077" title="D-max"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="10" f:filter="0.776" title="Jeep">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="3" f:filter="1.776.1113" title="Cherokee"/>
                <f:Query role="subset" totalResults="1" f:filter="1.776.2143" title="Grand Cherokee"/>
                <f:Query role="subset" totalResults="6" f:filter="1.776.2000317" title="Renegade"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="1" f:filter="0.784" title="Mazda">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.784.8147" title="5"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="16" f:filter="0.785" title="Mercedes-Benz">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="2" f:filter="1.785.8111" title="B-Klasse"/>
                <f:Query role="subset" totalResults="7" f:filter="1.785.3776" title="C-Klasse"/>
                <f:Query role="subset" totalResults="2" f:filter="1.785.3775" title="E-Klasse"/>
                <f:Query role="subset" totalResults="1" f:filter="1.785.2000285" title="GLA"/>
                <f:Query role="subset" totalResults="1" f:filter="1.785.2000096" title="GLK"/>
                <f:Query role="subset" totalResults="1" f:filter="1.785.3774" title="M-Klasse"/>
                <f:Query role="subset" totalResults="1" f:filter="1.785.3773" title="S-Klasse"/>
                <f:Query role="subset" totalResults="1" f:filter="1.785.2897" title="Vito"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="1" f:filter="0.7147" title="MINI">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.7147.2000173" title="Countryman"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="1" f:filter="0.787" title="Mitsubishi">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.787.7994" title="Grandis"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="9" f:filter="0.792" title="Nissan">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="7" f:filter="1.792.2000183" title="Leaf"/>
                <f:Query role="subset" totalResults="1" f:filter="1.792.1226" title="Primera"/>
                <f:Query role="subset" totalResults="1" f:filter="1.792.7188" title="X-Trail"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="1" f:filter="0.794" title="Oldsmobile">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.794.1239" title="Delta"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="2" f:filter="0.795" title="Opel">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="2" f:filter="1.795.1268" title="Vectra"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="1" f:filter="0.796" title="Peugeot">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.796.2000139" title="5008"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="1" f:filter="0.806" title="Saab">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.806.3224" title="9-3"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="1" f:filter="0.808" title="Skoda">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.808.7532" title="Superb"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="10" f:filter="0.7190" title="Ssangyong">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="2" f:filter="1.7190.7510" title="Korando"/>
                <f:Query role="subset" totalResults="1" f:filter="1.7190.7511" title="Rexton"/>
                <f:Query role="subset" totalResults="3" f:filter="1.7190.2000316" title="Rexton W"/>
                <f:Query role="subset" totalResults="4" f:filter="1.7190.8173" title="Rodius"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="2" f:filter="0.813" title="Toyota">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.813.3074" title="RAV4"/>
                <f:Query role="subset" totalResults="1" f:filter="1.813.8256" title="Tundra"/>
            </f:filter>
        </f:Query>
        <f:Query role="subset" totalResults="3" f:filter="0.817" title="Volkswagen">
            <f:filter name="model" title="Model" range="false">
                <f:Query role="subset" totalResults="1" f:filter="1.817.1437" title="Passat"/>
                <f:Query role="subset" totalResults="1" f:filter="1.817.1438" title="Polo"/>
            </f:filter>
        </f:Query>
    </f:filter>
    <f:filter name="registration_class" title="Avgiftsklasse" range="false">
        <f:Query role="subset" totalResults="82" f:filter="1" title="Passenger car"/>
        <f:Query role="subset" totalResults="14" f:filter="2" title="Van"/>
    </f:filter>
    <f:filter name="warranty_insurance" title="Warranty and insurance" range="false">
        <f:Query role="subset" totalResults="64" f:filter="1" title="Dealer Warranty"/>
    </f:filter>
    <f:filter name="engine_fuel" title="Fuel" range="false">
        <f:Query role="subset" totalResults="29" f:filter="0/1" title="Gasoline"/>
        <f:Query role="subset" totalResults="58" f:filter="0/2" title="Diesel"/>
        <f:Query role="subset" totalResults="7" f:filter="0/4" title="electr."/>
        <f:Query role="subset" totalResults="1" f:filter="0/5" title="gas+gasoline"/>
        <f:Query role="subset" totalResults="1" f:filter="0/11111" title="Hybrid"/>
    </f:filter>
    <f:filter name="engine_effect" title="Horsepower" range="true">
        <f:Query f:to="99" role="subset" title="60-99" totalResults="4" f:from="60"/>
        <f:Query f:to="149" role="subset" title="100-149" totalResults="48" f:from="100"/>
        <f:Query f:to="199" role="subset" title="150-199" totalResults="29" f:from="150"/>
        <f:Query f:to="299" role="subset" title="200-299" totalResults="10" f:from="200"/>
        <f:Query role="subset" totalResults="5" f:from="300" title="300-"/>
    </f:filter>
    <f:filter name="wheel_sets" title="Wheels" range="false">
        <f:Query role="subset" totalResults="40" f:filter="1" title="One set of wheels"/>
        <f:Query role="subset" totalResults="42" f:filter="2" title="Two sets of wheels"/>
    </f:filter>
    <f:filter name="mileage" title="Mileage" range="true">
        <f:Query f:to="10000" role="subset" title="0-10000" totalResults="26" f:from="0"/>
        <f:Query f:to="30000" role="subset" title="10001-30000" totalResults="20" f:from="10001"/>
        <f:Query f:to="70000" role="subset" title="30001-70000" totalResults="9" f:from="30001"/>
        <f:Query f:to="100000" role="subset" title="70001-100000" totalResults="8" f:from="70001"/>
        <f:Query f:to="150000" role="subset" title="100001-150000" totalResults="14" f:from="100001"/>
        <f:Query role="subset" totalResults="19" f:from="150001" title="150001-"/>
    </f:filter>
    <f:filter name="sales_form" title="Sales Form" range="false">
        <f:Query role="subset" totalResults="96" f:filter="1" title="Used car for sale"/>
    </f:filter>
    <f:filter name="exterior_colour" title="Farge" range="false">
        <f:Query role="subset" totalResults="1" f:filter="1" title="red"/>
        <f:Query role="subset" totalResults="9" f:filter="2" title="blue"/>
        <f:Query role="subset" totalResults="1" f:filter="4" title="brown"/>
        <f:Query role="subset" totalResults="14" f:filter="6" title="Gray"/>
        <f:Query role="subset" totalResults="3" f:filter="5" title="Grann"/>
        <f:Query role="subset" totalResults="1" f:filter="8" title="Gold"/>
        <f:Query role="subset" totalResults="7" f:filter="9" title="white"/>
        <f:Query role="subset" totalResults="35" f:filter="14" title="Black"/>
    </f:filter>
    <f:filter name="year" title="Production year" range="true">
        <f:Query f:to="1985" role="subset" title="1900-1985" totalResults="5" f:from="1900"/>
        <f:Query f:to="2004" role="subset" title="1986-2004" totalResults="18" f:from="1986"/>
        <f:Query f:to="2008" role="subset" title="2005-2008" totalResults="12" f:from="2005"/>
        <f:Query f:to="2011" role="subset" title="2009-2011" totalResults="12" f:from="2009"/>
        <f:Query f:to="2014" role="subset" title="2012-2014" totalResults="18" f:from="2012"/>
        <f:Query f:to="2016" role="subset" title="2015-2016" totalResults="31" f:from="2015"/>
    </f:filter>
    <f:filter name="transmission" title="Gearbox" range="false">
        <f:Query role="subset" totalResults="60" f:filter="2" title="Automat"/>
        <f:Query role="subset" totalResults="36" f:filter="1" title="Manual"/>
    </f:filter>
    <f:filter name="dealer_segment" title="adverts" range="false">
        <f:Query role="subset" totalResults="96" f:filter="1" title="test"/>
    </f:filter>
    <f:filter name="wheel_drive" title="Wheel Drive" range="false">
        <f:Query role="subset" totalResults="24" f:filter="1" title="Rear-wheel drive"/>
        <f:Query role="subset" totalResults="38" f:filter="2" title="Four wheel drive"/>
        <f:Query role="subset" totalResults="34" f:filter="3" title="Front wheel drive"/>
    </f:filter>
    <f:filter name="number_of_seats" title="Number of seats" range="true">
        <f:Query f:to="2" role="subset" title="0-2" totalResults="14" f:from="0"/>
        <f:Query f:to="4" role="subset" title="3-4" totalResults="4" f:from="3"/>
        <f:Query f:to="5" role="subset" title="5-5" totalResults="72" f:from="5"/>
        <f:Query f:to="9" role="subset" title="6-9" totalResults="6" f:from="6"/>
    </f:filter>
    <f:filter name="condition" title="Vehicle condition" range="false">
        <f:Query role="subset" totalResults="73" f:filter="1" title="Service History"/>
    </f:filter>
    <f:filter name="motor_ad_location" title="Kjøretøyet står i" range="false"/>
    <f:filter name="location" title="Område" range="false">
        <f:Query role="subset" totalResults="96" f:filter="20012" title="Rogaland"/>
    </f:filter>
    <f:filter name="price" title="Pris" range="true">
        <f:Query f:to="50000" role="subset" title="0-50000" totalResults="5" f:from="0"/>
        <f:Query f:to="100000" role="subset" title="50001-100000" totalResults="14" f:from="50001"/>
        <f:Query f:to="150000" role="subset" title="100001-150000" totalResults="14" f:from="100001"/>
        <f:Query f:to="250000" role="subset" title="150001-250000" totalResults="14" f:from="150001"/>
        <f:Query f:to="500000" role="subset" title="250001-500000" totalResults="34" f:from="250001"/>
        <f:Query role="subset" totalResults="15" f:from="500001" title="500001-"/>
    </f:filter>
    <f:filter name="body_type" title="Karosseri" range="false">
        <f:Query role="subset" totalResults="2" f:filter="7" title="Cabriolet"/>
        <f:Query role="subset" totalResults="4" f:filter="6" title="Coupe"/>
        <f:Query role="subset" totalResults="4" f:filter="5" title="Flerbruksbil"/>
        <f:Query role="subset" totalResults="8" f:filter="10" title="Kasse"/>
        <f:Query role="subset" totalResults="17" f:filter="2" title="Kombi 5-dørs"/>
        <f:Query role="subset" totalResults="6" f:filter="8" title="Pickup"/>
        <f:Query role="subset" totalResults="16" f:filter="3" title="Sedan"/>
        <f:Query role="subset" totalResults="16" f:filter="4" title="Stasjonsvogn"/>
        <f:Query role="subset" totalResults="23" f:filter="9" title="SUV/Offroad"/>
    </f:filter>
    <f:filter name="price_changed" title="Redusert pris" range="false"/>
    <f:sort template="https://example.com&amp;sort={f:sort?}&amp;lat={geo:lat?}&amp;lon={geo:lon?}">
        <os:Query role="f:sort" f:sort="0" title="Published" f:selected="true"/>
        <os:Query role="f:sort" f:sort="1" title="Model"/>
        <os:Query role="f:sort" f:sort="2" title="Price low-high"/>
        <os:Query role="f:sort" f:sort="3" title="Price, high-low"/>
        <os:Query role="f:sort" f:sort="4" title="Km low-high"/>
        <os:Query role="f:sort" f:sort="5" title="Km, high-low"/>
        <os:Query role="f:sort" f:sort="6" title="Year newest-oldest"/>
        <os:Query role="f:sort" f:sort="7" title="Year oldest-newest"/>
        <os:Query role="f:sort" f:sort="9" title="Most relevant"/>
    </f:sort>
    <os:totalResults>96</os:totalResults>
    <entry>
        <id>urn:id:41920312</id>
        <title>Auction title !123</title>
        <updated>2015-07-29T08:10:00.000Z</updated>
        <published>2015-07-29T08:17:00.000Z</published>
        <dc:identifier>41920312</dc:identifier>
        <category scheme="urn:api:ad:private" term="false"/>
        <category scheme="urn:api:ad:disposed" label="sold" term="false"/>
        <category scheme="urn:api:ad:type" label="Used vehicles" term="car-used-sale"/>
        <category scheme="urn:api:search:list:index" term="1"/>
        <link href="https://example.com/self/41920312" rel="self"/>
        <link href="http://example.com/41920312" rel="alternate" type="text/html"/>
        <georss:point api:accuracy="9">33.51233 1.43323</georss:point>
        <api:location>
            <api:city>Sommem</api:city>
        </api:location>
        <media:content height="768" medium="image" width="1024" url="http://example.com/24y3r5yhweg.jpg" type="image/jpeg"/>
        <author>
            <name>Mee</name>
            <uri>https://exampe.com</uri>
        </author>
        <api:adata model="https://example.com/data">
            <api:field name="make" value="Honda"/>
            <api:field name="model" value="Civic"/>
            <api:field name="year" value="2008"/>
            <api:field name="model_spec" value="Hybrid Automat"/>
            <api:field name="dealer_segment" value="Merkeforhandler"/>
            <api:field name="mileage" value="150000"/>
            <api:field name="wheel_sets" value="2"/>
            <api:field name="warranty_duration" value="4"/>
            <api:price name="registration_tax" value="900"/>
            <api:price name="net" value="56600"/>
            <api:price name="main" value="109000">
            <api:field name="road_tax_included" value="false"/>
            </api:price>
        </api:adata>
    </entry>
    <entry>
        <id>urn:id:35565123</id>
        <title>BMW X1 (143hk)</title>
        <updated>2015-07-29T04:01:00.000Z</updated>
        <published>2015-07-28T16:45:00.000Z</published>
        <dc:identifier>35565123</dc:identifier>
        <category scheme="urn:api:ad:private" term="false"/>
        <category scheme="urn:api:ad:disposed" label="Solgt" term="false"/>
        <category scheme="urn:api:ad:type" label="Bruktbil" term="car-used-sale"/>
        <category scheme="urn:api:search:list:index" term="2"/>
        <link href="https://example.com/35565123" rel="self"/>
        <link href="http://www.api.com/35565123" rel="alternate" type="text/html"/>
        <georss:point api:accuracy="9">58.47994 5.99994</georss:point>
        <api:location>
            <api:city>Sommem</api:city>
        </api:location>
        <media:content height="768" medium="image" width="1024" url="http://example.com/22_515899608.jpg" type="image/jpeg"/>
        <author>
            <name>Mee</name>
            <uri>https://exampe.com</uri>
        </author>
        <api:adata model="https://example.com/data">
            <api:field name="make" value="BMW"/>
            <api:field name="model" value="X1"/>
            <api:field name="year" value="2014"/>
            <api:field name="model_spec">(143hk)</api:field>
            <api:field name="dealer_segment" value="Merkeforhandler"/>
            <api:field name="mileage" value="20000"/>
            <api:field name="warranty_duration" value="11"/>
            <api:price name="net" value="438000"/>
            <api:price name="main" value="438000">
                <api:field name="road_tax_included" value="false"/>
            </api:price>
        </api:adata>
    </entry>
</feed>

(为了安全起见我改变了链接和id的原因:-)) 这里是我用来处理XML的裁剪的PHP脚本:

private $restClient = null;
    private $apiUrl = "https://example.com";


    public function __construct(ClientInterface $restClient)
    {
        $this->restClient = $restClient;
    }

    public function search($type, $queryParams)
    {
        $url = $this->apiUrl.'search/'.$type.'?'.http_build_query($queryParams);
        $rawData = $this->restClient->send($url);

        $resultSet = $this->parseResultset($rawData);
        return $resultSet;
    }

    public function getObject($type, $id)
    {
        $url = $this->apiUrl.'ad/'.$type.'/'.$id;
        $rawData = $this->restClient->send($url);
        if(isset($rawData)){
            $entry = new \SimpleXMLElement($rawData);
            $ns = $entry->getNamespaces(true);

            $resultSet = $this->parseEntry($entry, $ns);
            return $resultSet;
        }
    }

    private function parseEntry($entry, $ns)
    {
            $property = new Property();
            $property->id = (string)$entry->children($ns['dc'])->identifier;
            $property->title = (string)$entry->title;
            $property->updated = (string)$entry->updated;
            $property->published = (string)$entry->published;

            $links = array();
            foreach ($entry->link as $link) {
                $rel = $link->attributes()->rel;
                $ref = $link->attributes()->href;
                $links["$rel"] = "$ref";
            }
            $property->links = $links;

            $isPrivate = "false";
            $status = "";
            $adType = "";
            foreach ($entry->category as $category) {
              if ($category->attributes()->scheme =="urn:api:ad:private"){
                $isPrivate = $category->attributes()->term;
              }
              //if disposed == true, show the label
              if ($category->attributes()->scheme =="urn:api:ad:disposed"){
                if($category->attributes()->term == "true"){
                  $status = $category->attributes()->label;
                }
              }
              if ($category->attributes()->scheme =="urn:api:ad:type"){
                $adType = $category->attributes()->label;
              }
            }

            $property->isPrivate = (string)$isPrivate;
            $property->status = (string)$status;
            $property->adType = (string)$adType;

            $property->georss = (string)$entry->children($ns['georss'])->point;
            $location = $entry->children($ns['api'])->location;
            $property->city = (string)$location->children($ns['api'])->city;
            $property->address = (string)$location->children($ns['api'])->address;
            $property->postalCode = (string)$location->children($ns['api'])->{'postal-code'};

            $img = array();
            if ($entry->children($ns['media']) && $entry->children($ns['media'])->content->attributes()) {
                foreach($entry->children($ns['media'])->content as $content) {
                    $img[] = current($content->attributes());
                }
            }
            $property->img = $img;

            $property->author = (string)$entry->author->name;

            $adata = $entry->children($ns['api'])->adata;
            $make = "";
            $model = "";
            $year = 0;
            $mileage = 0;
            $warranty_duration = 0;
            $wheel_sets = 0;



            foreach ($adata->children($ns['api'])->field as $field) {
                if ($field->attributes()->name == 'make') {
                    $make = $field->attributes()->value;
                }
                if ($field->attributes()->name == 'model') {
                    $model = $field->attributes()->value;
                }
                if ($field->attributes()->name == 'year') {
                    $year = $field->attributes()->value;
                }
                if ($field->attributes()->name == 'mileage') {
                    $mileage = $field->attributes()->value;
                }
                if ($field->attributes()->name == 'warranty_duration') {
                    $warranty_duration = $field->attributes()->value;
                }

                if ($field->attributes()->name == 'wheel_sets') {
                    $wheel_sets = $field->attributes()->value;
                }

                if($field->attributes()->name == 'general_text') {

                    $i = 0;
                    foreach($field->children($ns['api'])->value as $text) {

                        foreach($text->children($ns['api'])->field as $t) {
                            if($t->attributes()->name == "title") {
                                $generalText[$i]['title'] = (string)$t->attributes()->value;
                            }
                            if($t->attributes()->name == "value") {
                                $generalText[$i]['value'] = (string)$t;
                            }
                        }
                        $i++;
                    }
                }
            }

            $property->make = (string)$make;
            $property->model = (string)$model;
            $property->year = (int)$year;
            $property->mileage = (int)$mileage;
            $property->warranty_duration = (int)$warranty_duration;
            $property->wheel_sets = (int)$wheel_sets;

            $Price_registration_tax = "";
            $Price_net = "";
            $Price_main = "";

            foreach ($adata->children($ns['api'])->price as $price) {
                echo "";
                if ($price->attributes()->name == 'main') {
                    $Price_main = (string)$price->attributes()->value;
                }
                if ($price->attributes()->name == 'net') {
                    $Price_net = (string)$price->attributes()->value;
                }
                if ($price->attributes()->name == 'registration_tax') {
                    $Price_registration_tax = (string)$price->attributes()->value;
                }
            }
            $property->Price_registration_tax = (int)$Price_registration_tax;
            $property->Price_net = (int)$Price_net;
            $property->Price_main = (int)$Price_main;


            return $property;
    }

    private function parseResultset($rawData)
    {
        $resultset = new Resultset();

        $xmlData = new \SimpleXMLElement($rawData);
        $ns = $xmlData->getNamespaces(true);

        $resultset->title = (string)$xmlData->title;
        $resultset->subtitle = (string)$xmlData->subtitle;

        $links = array();
        foreach ($xmlData->link as $link) {
            $rel = $link->attributes()->rel;
            $ref = $link->attributes()->href;
            $links["$rel"] = "$ref";
        }
        $resultset->links = $links;     


        $entries = array();
        foreach ($xmlData->entry as $entry) {
            array_push($entries, $entry);
        }

        $propertyList = array();        
        foreach ($entries as $entry) {  
            $property = $this->parseEntry($entry, $ns);
            $propertyList[] = $property;
        }

        $resultset->results = $propertyList;

        return $resultset;
    }

(并再次记住,某些链接/ id已被随机更改) 我遇到的问题是得到过滤结果,我不知道该怎么做。 有人可以帮助我吗?

0 个答案:

没有答案