SimpleXMLElement 객체에서 값 가져 오기
PHPSimpleXMLElement 객체에서 값 가져 오기
나는 이런 것을 가지고있다 :
$url = "http://ws.geonames.org/findNearbyPostalCodes?country=pl&placename=";
$url .= rawurlencode($city[$i]);
$xml = simplexml_load_file($url);
echo $url."\n";
$cityCode[] = array(
'city' => $city[$i],
'lat' => $xml->code[0]->lat,
'lng' => $xml->code[0]->lng
);
geonames에서 XML을 다운로드해야합니다. print_r ($ xml)을하면 다음과 같은 결과를 얻습니다.
SimpleXMLElement Object
(
[code] => Array
(
[0] => SimpleXMLElement Object
(
[postalcode] => 01-935
[name] => Warszawa
[countryCode] => PL
[lat] => 52.25
[lng] => 21.0
[adminCode1] => SimpleXMLElement Object
(
)
[adminName1] => Mazowieckie
[adminCode2] => SimpleXMLElement Object
(
)
[adminName2] => Warszawa
[adminCode3] => SimpleXMLElement Object
(
)
[adminName3] => SimpleXMLElement Object
(
)
[distance] => 0.0
)
나는 $ xml-> code [0] -> lat를 볼 수 있고 객체를 리턴한다. 어떻게 가치를 얻을 수 있습니까?
해결법
-
==============================
1.simpleXML Object를 문자열로 캐스팅해야합니다.
simpleXML Object를 문자열로 캐스팅해야합니다.
$value = (string) $xml->code[0]->lat;
-
==============================
2.마법 메서드 __toString ()을 사용할 수도 있습니다.
마법 메서드 __toString ()을 사용할 수도 있습니다.
$xml->code[0]->lat->__toString()
-
==============================
3.XML 엘리먼트의 값이 float 숫자 (위도, 경도, 거리)라면, (float)
XML 엘리먼트의 값이 float 숫자 (위도, 경도, 거리)라면, (float)
$value = (float) $xml->code[0]->lat;
정수의 경우 (int) :
$value = (int) $xml->code[0]->distance;
-
==============================
4.XML 요소의 가치를 모르는 경우
XML 요소의 가치를 모르는 경우
$value = (string) $xml->code[0]->lat; if (ctype_digit($value)) { // the value is probably an integer because consists only of digits }
(string)은 항상 문자열을 반환하고 is_int ($ value)는 false를 반환하기 때문에 값이 숫자인지 확인해야 할 때 작동합니다.
-
==============================
5.나를 위해 객체보다 배열을 사용하기가 더 쉽다.
나를 위해 객체보다 배열을 사용하기가 더 쉽다.
그래서, 나는 Xml-Object를 변환한다.
$xml = simplexml_load_file('xml_file.xml'); $json_string = json_encode($xml); $result_array = json_decode($json_string, TRUE);
-
==============================
6.'{}'을 사용하여 속성에 액세스 한 다음 원하는대로 할 수 있습니다. 저장하거나 내용을 표시하십시오.
'{}'을 사용하여 속성에 액세스 한 다음 원하는대로 할 수 있습니다. 저장하거나 내용을 표시하십시오.
$varName = $xml->{'key'};
당신의 예제에서 그녀는 코드입니다.
$filePath = __DIR__ . 'Your path '; $fileName = 'YourFilename.xml'; if (file_exists($filePath . $fileName)) { $xml = simplexml_load_file($filePath . $fileName); $mainNode = $xml->{'code'}; $cityArray = array(); foreach ($mainNode as $key => $data) { $cityArray[..] = $mainNode[$key]['cityCode']; .... } }
-
==============================
7.이 함수는 항상 XML 관련 값을 배열로 변환하는 데 도움이되는 함수입니다.
이 함수는 항상 XML 관련 값을 배열로 변환하는 데 도움이되는 함수입니다.
function _xml2array ( $xmlObject, $out = array () ){ foreach ( (array) $xmlObject as $index => $node ) $out[$index] = ( is_object ( $node ) ) ? _xml2array ( $node ) : $node; return $out; }
-
==============================
8.current ($ xml-> code [0] -> lat)를 시도해보십시오.
current ($ xml-> code [0] -> lat)를 시도해보십시오.
배열의 현재 포인터 아래에있는 요소를 반환합니다.이 값은 0이므로 값을 얻을 수 있습니다.
-
==============================
9.
header("Content-Type: text/html; charset=utf8"); $url = simplexml_load_file("http://URI.com"); foreach ($url->PRODUCT as $product) { foreach($urun->attributes() as $k => $v) { echo $k." : ".$v.' <br />'; } echo '<hr/>'; }
-
==============================
10.이 함수를 사용하여 배열을 변환 할 수 있습니다.
이 함수를 사용하여 배열을 변환 할 수 있습니다.
function xml2array($xml){ $arr = array(); foreach ($xml->children() as $r) { $t = array(); if(count($r->children()) == 0) { $arr[$r->getName()] = strval($r); } else { $arr[$r->getName()][] = xml2array($r); } } return $arr; }
-
==============================
11.
$codeZero = null; foreach ($xml->code->children() as $child) { $codeZero = $child; } $lat = null; foreach ($codeZero->children() as $child) { if (isset($child->lat)) { $lat = $child->lat; } }
-
==============================
12.
foreach($xml->code as $vals ) { unset($geonames); $vals=(array)$vals; foreach($vals as $key => $value) { $value=(array)$value; $geonames[$key]=$value[0]; } } print_r($geonames);
from https://stackoverflow.com/questions/2867575/get-value-from-simplexmlelement-object by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
Jquery Ajax를 사용하여 MySQL에서 데이터 검색 (0) | 2018.09.14 |
---|---|
PHP 문자열의 유니 코드 문자 (0) | 2018.09.14 |
PHP에서 거대한 XML 파일 구문 분석하기 (0) | 2018.09.14 |
여러 키로 다차원 배열 정렬 (0) | 2018.09.14 |
문자열을 Date 및 DateTime으로 변환 (0) | 2018.09.14 |