SimpleXml을 문자열로
PHP에서 문자열을 만드는 함수가 SimpleXMLElement
있습니까?
이 SimpleXMLElement::asXML()
방법을 사용하여 수행 할 수 있습니다 .
$string = "<element><child>Hello World</child></element>";
$xml = new SimpleXMLElement($string);
// The entire XML tree as a string:
// "<element><child>Hello World</child></element>"
$xml->asXML();
// Just the child node as a string:
// "<child>Hello World</child>"
$xml->child->asXML();
캐스팅을 사용할 수 있습니다.
<?php
$string = "<element><child>Hello World</child></element>";
$xml = new SimpleXMLElement($string);
$text = (string)$xml->child;
$ text는 'Hello World'가됩니다.
실제로 asXML ()은 이름이 말한대로 문자열을 xml로 변환합니다.
<id>5</id>
이것은 웹 페이지에 정상적으로 표시되지만 값을 다른 것과 일치시킬 때 문제가 발생합니다.
strip_tags 함수를 사용하여 다음과 같은 필드의 실제 값을 얻을 수 있습니다.
$newString = strip_tags($xml->asXML());
추신 : 정수 또는 부동 숫자로 작업하는 경우 intval () 또는 floatval ()을 사용 하여 정수로 변환해야합니다 .
$newNumber = intval(strip_tags($xml->asXML()));
이 asXML
방법을 다음과 같이 사용할 수 있습니다 .
<?php
// string to SimpleXMLElement
$xml = new SimpleXMLElement($string);
// make any changes.
....
// convert the SimpleXMLElement back to string.
$newString = $xml->asXML();
?>
을 사용 ->child
하여 child라는 하위 요소를 가져올 수 있습니다 .
이 요소는 하위 요소 의 텍스트를 포함합니다 .
그러나 var_dump()
해당 변수 를 시도 하면 실제로 PHP 문자열이 아님을 알 수 있습니다.
이 문제를 해결하는 가장 쉬운 방법은 strval(xml->child);
That 을 수행 하여 실제 PHP 문자열로 변환하는 것입니다.
이것은 XML을 루핑 할 때 디버깅 var_dump()
하고 결과를 확인하는 데 유용합니다 .
그래서 $s = strval($xml->child);
.
다음은이 문제를 해결하기 위해 작성한 함수입니다 (태그에 속성이 없다고 가정). 이 함수는 노드에서 HTML 형식을 유지합니다.
function getAsXMLContent($xmlElement)
{
$content=$xmlElement->asXML();
$end=strpos($content,'>');
if ($end!==false)
{
$tag=substr($content, 1, $end-1);
return str_replace(array('<'.$tag.'>', '</'.$tag.'>'), '', $content);
}
else
return '';
}
$string = "<element><child>Hello World</child></element>";
$xml = new SimpleXMLElement($string);
echo getAsXMLContent($xml->child); // prints Hello World
때로는 간단히 타입 캐스트 할 수 있습니다.
// this is the value of my $xml
object(SimpleXMLElement)#10227 (1) {
[0]=>
string(2) "en"
}
$s = (string) $xml; // returns "en";
이것은 오래된 게시물이지만 내 발견은 누군가를 도울 수 있습니다.
Probably depending on the xml feed you may/may not need to use __toString(); I had to use the __toString() otherwise it is returning the string inside an SimpleXMLElement. Maybe I need to drill down the object further ...
참고URL : https://stackoverflow.com/questions/3690942/simplexml-to-string
'developer tip' 카테고리의 다른 글
Visual Studio가 자동 단축키 전에 주요 이벤트를 포착하는 이유는 무엇입니까? (0) | 2020.10.11 |
---|---|
속성 이름에 대한 변수를 사용하여 객체 생성 (0) | 2020.10.11 |
cURL 억제 응답 본문 (0) | 2020.10.10 |
내 비동기 함수가 Promise {를 반환하는 이유는 무엇입니까? (0) | 2020.10.10 |
logcat에서 이전 데이터를 어떻게 지울 수 있습니까? (0) | 2020.10.10 |