여기 있는 많은 예제는 XML 문자열이 필요합니다. 모든 예제에서 문자열을 반복하는 대신에, 각 예제에서 포함하는 파일을 넣어두겠습니다. 이 파일은 다음 예제 섹션에 있습니다. 이 방법 대신, XML 문서를 만들고 simplexml_load_file()으로 읽어올 수도 있습니다.
Example #1 XML 문자열을 가진 포함 파일 example.php
<?php
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<movies>
<movie>
<title>PHP: Behind the Parser</title>
<characters>
<character>
<name>Ms. Coder</name>
<actor>Onlivia Actora</actor>
</character>
<character>
<name>Mr. Coder</name>
<actor>El ActÓr</actor>
</character>
</characters>
<plot>
So, this language. It's like, a programming language. Or is it a
scripting language? All is revealed in this thrilling horror spoof
of a documentary.
</plot>
<great-lines>
<line>PHP solves all my web problems</line>
</great-lines>
<rating type="thumbs">7</rating>
<rating type="stars">5</rating>
</movie>
</movies>
XML;
?>
SimpleXML의 간단함은 기본 XML 문서에서 하나의 문자열이나 숫자를 가져오는 데에서 보여집니다.
Example #2 <plot> 가져오기.
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
echo $xml->movie[0]->plot; // "So this language. It's like..."
?>
XML 문서 안에 PHP 이름 규칙에 어긋나는 요소(예: 하이픈)에 접근할 때는 요소 이름을 {}과 '로 감쌉니다.
Example #3 <line> 가져오기.
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
echo $xml->movie->{'great-lines'}->line; // "PHP solves all my web problems"
?>
Example #4 SimpleXML에서 다중 요소에 접근하기.
하나의 부모 요소에 포함되는 여러 개의 자식 요소에 접근할 때는, 일반적인 반복 기술이 적용됩니다.
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
/* 각 <movie> 노드에서, 각각의 <plot>을 출력합니다. */
foreach ($xml->movie as $movie) {
echo $movie->plot, '<br />';
}
?>
Example #5 속성 사용하기
여기까지, 요소 이름과 값만을 다뤘습니다. SimpleXML은 요소의 속성에도 접근할 수 있습니다. 요소 속성에 접근할때는 요소를 단순히 array로 취급하면 됩니다.
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
/* 첫번째 movie의 <rating> 노드에 접근합니다.
* Output the rating scale, too. */
foreach ($xml->movie[0]->rating as $rating) {
switch((string) $rating['type']) { // Get attributes as element indices
case 'thumbs':
echo $rating, ' thumbs up';
break;
case 'stars':
echo $rating, ' stars';
break;
}
}
?>
Example #6 요소와 속성을 텍스트와 비교하기.
요소와 속성을 문자열과 비교하거나, 문자열을 요구하는 함수에 통과시킬 때는 (string)을 사용하여 문자열로 변환해야 합니다. 그렇지 않으면, PHP는 요소를 객체로 취급합니다.
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
if ((string) $xml->movie->title == 'PHP: Behind the Parser') {
print 'My favorite movie.';
}
htmlentities((string) $xml->movie->title);
?>
Example #7 두 요소 비교하기.
PHP 5.2.0부터 두 개의 SimpleXMLElement는 같은 곳을 가르키고 있어도 다른 것으로 간주합니다.
<?php
$el1 = new SimpleXMLElement($xmlstr);
$el2 = new SimpleXMLElement($xmlstr);
var_dump($el1 == $el2); // PHP 5.2.0 부터 false
?>
Example #8 XPath 사용하기.
SimpleXML은 XPath 지원을 내장하고 있습니다. 모든 <character> 요소를 찾으려면:
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
foreach ($xml->xpath('//character') as $character) {
echo $character->name, 'played by ', $character->actor, '<br />';
}
?>
'//'은 와일드카드로 사용됩니다. 절대 경로로 지정하려면, 슬래시 하나를 생략하십시오.
Example #9 값 설정하기.
SimpleXML의 데이터는 바뀔 수 있습니다. SimpleXML은 모든 객체에 대한 변경을 허용합니다.
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
$xml->movie[0]->characters->character[0]->name = 'Miss Coder';
echo $xml->asXML();
?>
위 코드는 원본에서 Ms. Coder를 Miss Coder로 변경한 새 XML 문서를 출력합니다.
Example #10 요소와 속성 추가하기.
PHP 5.1.3부터, SimpleXML은 자식과 속성을 쉽게 추가할 수 있게 되었습니다.
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
$character = $xml->movie[0]->characters->addChild('character');
$character->addChild('name', 'Mr. Parser');
$character->addChild('actor', 'John Doe');
$rating = $xml->movie[0]->addChild('rating', 'PG');
$rating->addAttribute('type', 'mpaa');
echo $xml->asXML();
?>
위 코드는 원본 XML에서 새로운 character와 rating을 추가한 XML 문서를 출력합니다.
Example #11 DOM 상호 작용.
PHP는 XML 노드를 SimpleXML과 DOM 형식으로 변환할 수 있습니다. 이 예제는 DOM 요소를 SimpleXML로 바꾸는 방법을 보여줍니다.
<?php
$dom = new domDocument;
$dom->loadXML('<books><book><title>blah</title></book></books>');
if (!$dom) {
echo 'Error while parsing the document';
exit;
}
$s = simplexml_import_dom($dom);
echo $s->book[0]->title;
?>