1. 字元串定義
1-1 單引号定義
不能轉義内容中的變量等東西。
$_a = ;
//單引号
$_string1 = 'This is $_a a String';
1-2 雙引号定義
可以轉義變量、轉義字元等。
$_string2 = "This is $_a a String";
1-3 複雜式
格式複雜,注意定義頭後面沒有空格;尾巴上頂格,後面沒有代碼或者注釋什麼的;中間字元也要整體到頂。
$_xml = <<<_xml
<?xml version="1.0" encoding="utf-8" ?>
<root>
<version>1.0</version>
<info>xml解析測試</info>
<user>
<name>飄城Web俱樂部</name>
<url>http://www.yc60.com</url>
<author sex="男">李炎恢</author>
</user>
<user>
<name>北風網</name>
<url>http://www.ibeifeng.com</url>
<author sex="女">誰誰誰</author>
</user>
<user>
<name>電驢</name>
<url>http://www.verycd.com</url>
<author sex="男">姓黃的</author>
</user>
</root>
_xml;
2. 使用SimpleXML操作XML
2-1 建立SimpleXML對象和生成XML檔案
建立SimpleXML對象時要傳入XML字元串,然後生成XML檔案時指定檔案的位址。
//建立一個simplexml對象,傳入xml字元串
$_sxe = new SimpleXMLElement($_xml);
//生成xml檔案
$_sxe->asXML('text.xml');
2-2 載入XML檔案和測試
使用simple_load_file()函數載入XML檔案,再用各種方法測試顯示是否載入成功。
//載入xml檔案,simplexml
$_sxe = simplexml_load_file('text.xml');
//測試
// echo $_sxe;//這個是錯誤的,不能顯示成功的
echo $_sxe->asXML();
var_dump($_sxe);
print_r($_sxe);
Reflection::export(new ReflectionClass($_sxe));//反射
2-3 通路XML
2-3-1通路一級标簽的值
同一級下同樣的标簽隻有有多個的時候,把它們看成數組操作,當然也可以進行周遊。
//載入XML
$_sxe = simplexml_load_file('text.xml');
//讀一級标簽的值,version是标簽名
echo $_sxe->version;
//如果有多個version标簽
print_r($_sxe->version);
echo $_sxe->version[];
echo $_sxe->version[];
echo $_sxe->version[];
foreach($_sxe->version as $_v){
echo '['.$_v.']';
}
2-3-2 通路二級标簽的值
通路二級标簽或者後面級别标簽的值,要像多元數組周遊的那樣,一級一級地往下找過去。
//如果要通路二級标簽,必須一層一層指明
echo $_sxe->user[]->name;
//周遊所有的name值
foreach($_sxe->user as $_user){
echo '['.$_user->name.']';
}
2-3-3 通路标簽裡面的屬性的值
使用simplexml_load_file()裡面的attributes()方法,取出标簽屬性的值。标簽屬性好像隻有一個的樣子,是以不用傳入參數的啦。
//輸出第二個user的author的性别
echo $_sxe->user[]->author->attributes();
2-3-4 使用xpath通路XML節點
看列印出來的$_version數組的樣子,可以用$_version[0]或者$_version[0][0]來表示值,不過前者相對于後者來說比較友善和便于了解。
//使用xpath來擷取XML節點操作
$_sxe = simplexml_load_file('text.xml');
//擷取version的值
$_version = $_sxe->xpath('/root/version');
var_dump($_version);
echo $_version[];
周遊的時候和上面差不多。二級或者後面級數标簽的檢視就是路徑參數的設定(注意,root前面的“/”不能少啊,不然沒有值)。屬性值的檢視也沒有什麼變化。
//周遊
foreach($_version as $_v){
echo $_v;
}
//進行二級标簽
$_name = $_sxe->xpath('/root/user/name');
// print_r($_name);
echo $_name[];
//屬性檢視
$_author = $_sxe->xpath('/root/user/author');
echo $_author[]->attributes();
3. 使用DOMDocument操控XML
3-1 DOMDocument的解析
建立dom對象和載入xml檔案。
//建立dom對象
$_doc = new DOMDocument();
//載入xml檔案
$_doc->load('text.xml');
3-2 通路xml
像javascript一樣按照名稱找标簽,item(n)表示第幾個标簽,nodeValue表示标簽的值,length表示這類标簽的長度。
//取第一個version的值,getElementsByTagName就是查找傳入的标簽
$_version = $_doc->getElementsByTagName('version');
//這類标簽的長度
echo $_version->length;
//item(n)表示第n個标簽,以下為第一個version标簽的值
echo $_version->item()->nodeValue;
//标簽值周遊
foreach($_version as $_v){
echo $_v->nodeValue;
}
3-3 聲明domdocument對象和生成xml
聲明domdocument對象時傳入版本和編碼,生成xml時傳入xml檔案位址。有點自動化的樣子,很準确。
//聲明domdocument對象
$_doc = new DOMDocument('1.0','utf-8');
//生成xml
$_doc->save('bbb.xml');
3-4 xml中标簽和值的插入以及标準格式化輸出
先後什麼的不用介意啊!!
//使用xml标準化格式輸出
$_doc->formatOutput = true;
//使用createelement來建立一個标簽
$_root = $_doc->createelement('root');
//在root标簽裡添加version标簽
$_version = $_doc->createelement('version');
//把version标簽添加到root标簽内
$_root->appendChild($_version);
//在version裡面填入一個字元串
$_versionTextNode = $_doc->createTextNode('1.0');
//将1.0放入version标簽
$_version->appendChild($_versionTextNode);
//将root主标簽添加到xml檔案裡
$_doc->appendChild($_root);