SimpleXML에서 @attribute에 액세스하기
PHPSimpleXML에서 @attribute에 액세스하기
내 SimpleXML 객체의 @attribute 섹션에 액세스하는 데 문제가 있습니다. 내가 전체 개체를 var_dump 할 때 올바른 출력을 얻었고 나머지 개체 (중첩 된 태그)를 var_dump 할 때 올바른 출력을 얻을 수 있었지만 문서와 var_dump $ xml-> OFFICE -> { '@attributes'}, 첫 번째 var_dump가 출력 할 속성이 있음을 분명히 보여 주지만 빈 객체를 얻습니다.
누구나 내가 뭘 잘못하고 있는지 / 내가이 일을 할 수있는 방법을 아는가?
해결법
-
==============================
1.XML 노드에서 attributes () 함수를 호출하여 XML 요소의 속성을 가져올 수 있습니다. 그런 다음 함수의 반환 값을 var_dump 할 수 있습니다.
XML 노드에서 attributes () 함수를 호출하여 XML 요소의 속성을 가져올 수 있습니다. 그런 다음 함수의 반환 값을 var_dump 할 수 있습니다.
php.net에서 더 많은 정보보기 http://php.net/simplexmlelement.attributes
해당 페이지의 예제 코드 :
$xml = simplexml_load_string($string); foreach($xml->foo[0]->attributes() as $a => $b) { echo $a,'="',$b,"\"\n"; }
-
==============================
2.이 시도
이 시도
$xml->attributes()->Token
-
==============================
3.
$xml = <<<XML <root> <elem attrib="value" /> </root> XML; $sxml = simplexml_load_string($xml); $attrs = $sxml->elem->attributes(); echo $attrs["attrib"]; //or just $sxml->elem["attrib"]
SimpleXMLElement :: 특성을 사용하십시오.
사실, SimpleXMLElement get_properties 핸들러는 큰 시간을 차지합니다. "@attributes"라는 속성이 없으므로 $ sxml-> elem -> { "@ attributes"} [ "attrib"]를 수행 할 수 없습니다.
-
==============================
4.아래처럼 @attributes를 얻기 위해 여러 번 사용 했었습니다. 조금 길었습니다.
아래처럼 @attributes를 얻기 위해 여러 번 사용 했었습니다. 조금 길었습니다.
$att = $xml->attributes(); echo $att['field'];
좀 더 쉬워야하며 한 번에 한 형식으로 만 속성을 가져올 수 있습니다.
$xml['field'];
다른 대안은 다음과 같습니다.
$xml->attributes()->{'field'};
$xml->attributes()->field; $xml->{"@attributes"}->field; $xml->attributes('field'); $xml->attributes()['field']; $xml->attributes->['field'];
-
==============================
5.할 수있는 일은 다음과 같습니다.
할 수있는 일은 다음과 같습니다.
echo $xml['token'];
-
==============================
6.하지만 이러한 속성 목록을 찾고 있다면 XPath는 친구가 될 것입니다.
하지만 이러한 속성 목록을 찾고 있다면 XPath는 친구가 될 것입니다.
print_r($xml->xpath('@token'));
-
==============================
7.불행히도 나는 PHP 5.5의 고유 한 빌드 (Gentoo와 잠시 붙어있다)를 가지고 있는데, 내가 발견 한 것은
불행히도 나는 PHP 5.5의 고유 한 빌드 (Gentoo와 잠시 붙어있다)를 가지고 있는데, 내가 발견 한 것은
$xml->tagName['attribute']
효과가있는 유일한 해결책이었습니다. 나는 'Right & Quick'형식을 포함하여 위의 Bora의 모든 방법을 시도했지만 모두 실패했습니다.
이것이 가장 쉬운 형식이라는 사실은 더할 나위없이 좋았지 만 다른 사람들이 일했던 모든 형식을 시도해 보는 것이 정신이 없다고 생각하는 것을 즐기지 못했습니다.
Njoy는 가치가 무엇인지 (고유 한 빌드를 언급 했나요?).
-
==============================
8.Simplexml_load_file ($ file)의 결과를 JSON 구조로 변환하고 다시 디코딩하는 데 도움이되었습니다.
Simplexml_load_file ($ file)의 결과를 JSON 구조로 변환하고 다시 디코딩하는 데 도움이되었습니다.
$xml = simplexml_load_file("$token.xml"); $json = json_encode($xml); $xml_fixed = json_decode($json); $try1 = $xml->structure->{"@attributes"}['value']; print_r($try1); >> result: SimpleXMLElement Object ( ) $try2 = $xml_fixed->structure->{"@attributes"}['value']; print_r($try2); >> result: stdClass Object ( [key] => value )
from https://stackoverflow.com/questions/1652128/accessing-attribute-from-simplexml by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP에서 startsWith () 및 endsWith () 함수 (0) | 2018.09.06 |
---|---|
jQuery 사용자 이름이 이미 있는지 확인하기 위해 원격 메소드 사용법 검증 (0) | 2018.09.06 |
궁극의 클린 / 보안 기능 (0) | 2018.09.06 |
경고를 시도 할 수 있습니까? (0) | 2018.09.06 |
MySQL datetime에서 PHP로 다른 형식으로 변환 (0) | 2018.09.06 |