標籤:des style blog color io ar for strong 檔案
第一個例子:
PHP與XML聯絡緊密,下面是一個較簡單的解析XML節點資料的例子,樣本中自訂有一個XML範例檔案代碼,通過PHP將依次讀取出XML節點中的id、name和email資料,是讀取較大的XML檔案的前提,新手的話,那就更應該參考了:
01 <?php02 //定義一個XML範例檔案03 $xml_string="<?xml version=‘1.0‘?>04 <users>05 <user id=‘398‘>06 <name>Foo</name>07 <email>[email protected]</name>08 </user>09 <user id=‘867‘>10 <name>Foobar</name>11 <email>[email protected]</name>12 </user>13 </users>";14 //開始解析XML15 $xml = simplexml_load_string($xml_string);16 foreach ($xml->user as $user)17 {18 echo $user[‘id‘], ‘ ‘;19 echo $user->name, ‘ ‘;20 echo $user->email, ‘<br />‘;21 }22 ?>
第二個例子:
Php讀取XML情況六,再foreach一次,我們把7,8,9讀出來!:
XML檔案(cy.xm)如下:
<?xml version="1.0"encoding="gb2312"?>
<xml>
<main>
<list>1</list>
<list>2</list>
<list>3</list>
</main>
<main>
<list>4</list>
<list>5</list>
<list>6</list>
</main>
<m>
<list>7</list>
<list>8</list>
<list>9</list>
</m>
</xml>
Php檔案(cy.php)如下:
<?php
$xml = new DOMDocument();
$xml->load(‘cy.xml‘);
$main = $xml->getElementsByTagName_r(‘main‘);
foreach( $main as $main)
{
$list = $main->getElementsByTagName_r( "list" );
foreach ( $list as $list )
{
$value =$list->firstChild->nodeValue;
echo $value."<br />";
}
}
$m = $xml->getElementsByTagName_r(‘m‘);
foreach( $m as $m)
{
$list = $m->getElementsByTagName_r( "list" );
foreach ( $list as $list )
{
$value =$list->firstChild->nodeValue;
echo $value."<br />";
}
}
?>
cy.php輸出結果:
1
2
3
4
5
6
7
8
9
===============
Php讀取XML情況七,cy.xml變得更複雜一些:
XML檔案(cy.xml)如下:
<?xml version="1.0"encoding="gb2312"?>
<xml>
<main>
<title>a</title>
<list>1</list>
<list>2</list>
<list>3</list>
</main>
<main>
<title>b</title>
<list>4</list>
<list>5</list>
<list>6</list>
</main>
<m>
<title>c</title>
<list>7</list>
<list>8</list>
<list>9</list>
</m>
</xml>
那麼,我們如何唯讀出<main></main>內<title></title>中的值呢?
Php檔案(cy.php)如下:
<?php
$xml = new DOMDocument();
$xml->load(‘cy.xml‘);
$main = $xml->getElementsByTagName_r(‘main‘);
foreach( $main as $main)
{
$list = $main->getElementsByTagName_r( "list" );
foreach ( $list as $list )
{
$value =$list->firstChild->nodeValue;
echo $value."<br />";
}
$title = $main->getElementsByTagName_r( "title");
foreach ( $title as $title )
{
$value =$title->firstChild->nodeValue;
echo $value."<br />";
}
}
$m = $xml->getElementsByTagName_r(‘m‘);
foreach( $m as $m)
{
$list = $m->getElementsByTagName_r( "list" );
foreach ( $list as $list )
{
$value =$list->firstChild->nodeValue;
echo $value."<br />";
}
}
?>
cy.php輸出結果:
1
2
3
a
4
5
6
b
7
8
9
想一下,如何讀出<m>中<title></title>的值?
Php讀取XML再通過一個例子鞏固一下:
XML檔案(cy.xml)如下:
<?xml version="1.0"encoding="gb2312"?>
<LevelOne>
<LevelTwo>
<LevelThree id="1">This is TextOne</LevelThree>
<LevelThree id="2">This is TextTwo</LevelThree>
<LevelThree id="3">This is TextThree</LevelThree>
</LevelTwo>
<LevelTwo>
<LevelThree id="4">This is TextFour</LevelThree>
<LevelThree id="5">This is TextFive</LevelThree>
<LevelThree id="6">This is TextSix</LevelThree>
</LevelTwo>
</LevelOne>
Php檔案(cy.php)如下:
<?php
$xml = new DOMDocument(); //建立一個DOMDocument
$xml->load(‘cy.xml‘); //Php指定需要讀取xml檔案的位置
$LevelOne =$xml->getElementsByTagName_r(‘LevelOne‘);//按照名稱取得節點,返回所有節點的集合,不過這裡這樣讀LevelOne是沒有意義的....
$LevelOne =$xml->getElementsByTagName_r(‘LevelOne‘)->item(0);//返回第一個LevelOne節點中的內容
$LevelTwo =$LevelOne->getElementsByTagName_r(‘LevelTwo‘);//按照名稱取得節點,返回所有LevelTwo
foreach ( $LevelTwo as $Content)//迴圈讀出所有LevelTwo,並在迴圈裡,把LevelTwo用Content表示
{
$LevelThree =$Content->getElementsByTagName_r(‘LevelThree‘);//返回所有LevelThree
foreach ( $LevelThree as $Concert )
{
$name = $Concert->nodeName;//節點名稱
$value = $Concert->nodeValue;//節點值
$id = $Concert->getAttribute(‘id‘);//"id"屬性值
echo $name."<br />";
echo $value."<br />";
echo $id."<br />";
}
}
?>
如果用$LevelOne =$xml->getElementsByTagName_r(‘LevelOne‘)這樣的方式取得節點,那麼,讀取裡面的內容,需要用foreach迴圈,因為$LevelOne = $xml->getElementsByTagName(‘LevelOne‘)返回的,是一個集合,並不是一個具體的節點----僅管叫做LevelOne的節點只有一個....
如果用$LevelOne =$xml->getElementsByTagName_r(‘LevelOne‘)->item(0)這樣的方式取得節點,那麼讀取裡面的內容,可以直接$LevelOne->xxxxxx,因為這樣返回的是一個具體的節點。
現在提供一種很簡便的方法用PHP讀取XML:
XML檔案(cy.xml)如下:
<?xml version="1.0"encoding="gb2312"?>
<xml>
<site>
<part id="1">
<title id="a">czbinxml版塊</title>
<describe>xml的相關文章</describe>
</part>
<part id="2">
<title id="b">czbinphp版塊</title>
<describe>php的相關文章</describe>
</part>
<part id="3">
<title id="c">czbinajax版塊</title>
<describe>ajax的相關文章</describe>
</part>
</site>
</xml>
Php檔案(cy.php)如下:
<?php
$xml = simplexml_load_file(‘sxml.xml‘);
$part = $xml->site->part;
foreach ( $part as $content )
{
echo $content[‘id‘]."<br />";
echo $content->title."<br/>";
echo $content->title[‘id‘]."<br/>";
echo $content->describe."<br/>";
}
?>
cy.php輸出結果:
1
czbin xml版塊
a
xml的相關文章
2
czbin php版塊
b
php的相關文章
3
czbin ajax版塊
c
ajax的相關文章
怎麼樣?的確很簡單吧!
php如何讀出xml的節點內容 兩個例子