以前上課老師講的資料 XML 介紹
XML 介紹
可延伸標示語言(eXtensible Markup Language) 讓人方便閱讀,又容易使電腦讀取
整份文件可以視為一個實體文件(Entity)
其結構為樹狀結構,由元素與標籤組成
起始標籤可以有屬性 (attribute)
<?xml version="1.0" encoding="utf-8"?>//XML 宣告
<namecard>
<name>Learry Lee</name> <tel>04-23456789</tel>
<email href="mailto:learry@gmail.com"/>
</namecard>
PHP SimpleXML
$xmlData =
"<?xml version='1.0' encoding='UTF-8'?> <note>
<to>John</to>
<from>Mary</from>
<title>Reminder</title>
<body>'Don't forget me this weekend!</body>
</note>";
$xml = simplexml_load_string($xmlData); echo $xml->to;
echo $xml->from;
echo $xml->title;
echo $xml->body;
轉換錯誤檢查
libxml_use_internal_errors(true);
$xmlData =
"<?xml version='1.0' encoding='UTF-8'?> <note>
<to>John</to>
<from>Mary</from>
<title>Reminder</wrongtitle>
<body>'Don't forget me this weekend!</wrongbody>
</note>";
$xml = simplexml_load_string($xmlData);
if ($xml == false) {
echo "Fail to transfer XML:"; foreach(libxml_get_errors() as $error) {
echo "<br>". $error->message;
}
} else {
echo $xml->title;
}
從檔案讀取XML並顯示
$xml=simplexml_load_file("books.xml");
echo $xml->book[0]->title.'<br>'; echo $xml->book[0]->author.'<br>';
foreach($xml->children() as $book) { echo $book->title.'<br>';
echo $book->author.'<br>';
}
讀取XML 屬性
$xml=simplexml_load_file("books.xml");
echo $xml->book[0]['category'].'<br>'; echo $xml->book[0]->title['lang'].'<br>';
foreach($xml->children() as $book) { echo $book['category'].'<br>'; echo $book->title['lang'].'<br>';
}
陣列轉換為XML
function arrayToXml( $data, &$xml ) { foreach( $data as $key => $value ) {
if( is_array($value) ) {
$subnode = $xml->addChild($key); arrayToXml($value, $subnode);
} else {
$xml->addChild($key,$value);
} }
}
$xml = new SimpleXMLElement('<Root/>'); arrayToXml($data, $xml);
#xml->asXML;
留言