2014-07-10 4 views
1

안녕하세요 XML 파일에서 일부 데이터를 추출하려고합니다. 하지만 내 솔루션으로 제대로 작동하지 않습니다. XML 파일에서 특정 결과 가져 오기

XML 파일 : 나는 컬럼의 이름과 값을 원하는 그래서 basicly, URL = VALUE 제목 = VALUE 등 : 내가 추출 할 것은 다음과 같다

<?xml version='1.0' encoding='UTF-8'?> 
<m4n xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="datafeeds/ext/m4n-datafeeds.xsd"> 
<dataHeader> 
<exportType>stream</exportType> 
<exportId>2000433</exportId> 
<rows>40434</rows> 
<lastChecked>2014-07-02 10:12:24.41</lastChecked> 
<lastUpdated>2014-07-02 10:13:36.09</lastUpdated> 
<parserLocale>nl_NL</parserLocale> 
<streamCurrency>EUR</streamCurrency> 
<name>VALUE</name> 
<description><![CDATA[]]></description> 
</dataHeader> 

<data> 
<record> 
    <recordHash><![CDATA[-2147395708]]></recordHash> 
    <column name="url"><![CDATA[VALUE]]></column> 
    <column name="title"><![CDATA[VALUE]]></column> 
    <column name="description"><![CDATA[VALUE]]></column> 
    <column name="offerid"><![CDATA[VALUE]]></column> 
    <column name="image"><![CDATA[VALUE]]></column> 
    <column name="price"><![CDATA[VALUE]]></column> 
    <column name="category"><![CDATA[VALUE]]></column> 
    <column name="subcategory"><![CDATA[VALUE]]></column> 
    <column name="stock" /> 
    <column name="timetoship"><![CDATA[VALUE]]></column> 
    <column name="ean"><![CDATA[VALUE]]></column> 
    <column name="price_shipping"><![CDATA[VALUE]]></column> 
    <column name="price_old" /> 
    <column name="vendor"><![CDATA[VALUE]]></column> 
    <column name="category_path" /> 
    <column name="description2"><![CDATA[VALUE]]></column> 
    <column name="largeimage"><![CDATA[VALUE]]></column> 
    <column name="author"><![CDATA[VALUE]]></column> 
    <column name="column0"><![CDATA[VALUE]]></column> 
    <column name="column1"><![CDATA[VALUE]]></column> 
    <column name="column2"><![CDATA[VALUE]]></column> 
    <column name="column3"><![CDATA[VALUE]]></column> 
    <column name="column4"><![CDATA[VALUE]]></column> 
    <column name="column5"><![CDATA[VALUE]]></column> 
    <column name="column6"><![CDATA[VALUE]]></column> 
    <column name="column7"><![CDATA[VALUE]]></column> 
    <column name="column8"><![CDATA[VALUE]]></column> 
    <column name="column9"><![CDATA[VALUE]]></column> 
    <column name="sku"><![CDATA[VALUE]]></column> 
    <column name="size"><![CDATA[VALUE]]></column> 
    <column name="height"><![CDATA[VALUE]]></column> 
</record> 
</data></m4n> 

함께 열.

foreach($xml->data as $data) 
{ 
    foreach($data->record as $record) 
    { 
     foreach($record->column as $column) 
     { 
      echo $column->attributes()->{0}." - ".(string)$column."<br/>"; // fetch first attribute and the CDATA value 

     } 
    } 
} 

문자열로 $column 변환 :이 같은 CDATA 값을 추출 할 필요가

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, 'url'); 
$data = curl_exec($ch); 
curl_close($ch); 

$xml = new SimpleXMLElement($data); 

foreach($xml->data as $data) 
{ 
    foreach($data->record as $record) 
    { 
     foreach($record->column as $column) 
     { 
      foreach($column->attributes() as $key => $value) 
      { 
       echo $key." - ".$value."<br/>"; 
      } 
     } 
    } 
} 

사람이

+0

스크립트에 어떤 문제가 있습니까? 내가 본 유일한 오류는 당신이''과''태그를 닫지 않았다는 것입니다. XML은'SimpleXMLElement'가 작동하려면 유효해야합니다. –

+0

@MihaiIorga 문제는 내가 갖고 싶은 결과를 얻지 못한다는 것입니다. 나는 단지 'name'이라는 단어를 얻었습니다. – user3824329

+0

@MihaiIorga 예, 좋았지 만, 당신이 볼 수 있듯이 name : url 등의 결과를 얻었습니다. 하지만 내가 도달하려고하는 것은이 경우 URL이 URL과 동일한 열의 콘텐츠 값을 나타내는 url입니다. 하지만 나는 모든 레코드가 단지 URL이 아니길 바래. – user3824329

답변

1

확인을 살펴 시겠어요 :

나는 다음과 같은 방법을 시도 .

CodePAD

+0

마지막으로 'foreach'를 다시 작성했습니다. 불필요한 것으로 처리되었습니다. –

+0

@mihailorga 고맙습니다. – user3824329

관련 문제