读书人

php 读取xml资料

发布时间: 2012-09-10 11:02:32 作者: rapoo

php 读取xml文件
返回xml数据
http://hi.baidu.com/jimofengfan/blog/item/31b77ecdeb075c5c0fb3458d.html

http://hi.baidu.com/aaxh/blog/item/026c78ec551bfad52e2e2107.html
简单读取XML的方法

<?xml version="1.0" encoding="gb2312"?><xml><site><part id="1"><title id="a">czbin xml版块</title><describe>xml的相关文章</describe></part><part id="2"><title id="b">czbin php版块</title><describe>php的相关文章</describe></part><part id="3"><title id="c">czbin ajax版块</title><describe>ajax的相关文章</describe></part></site></xml>

<?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 />";}?>

输出结果:
1czbin xml版块axml的相关文章2czbin php版块bphp的相关文章3czbin ajax版块cajax的相关文章


DOM读取
<?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$xml = new DOMDocument();$xml->load('cy.xml');$main = $xml->getElementsByTagName('main');foreach( $main as $main){$list = $main->getElementsByTagName( "list" );foreach ( $list as $list ){$value = $list->firstChild->nodeValue;echo $value."<br />";}}$m = $xml->getElementsByTagName('m');foreach( $m as $m){$list = $m->getElementsByTagName( "list" );foreach ( $list as $list ){$value = $list->firstChild->nodeValue;echo $value."<br />";}}?>


<?xml version="1.0" encoding="gb2312"?><LevelOne><LevelTwo><LevelThree id="1">This is Text One</LevelThree><LevelThree id="2">This is Text Two</LevelThree><LevelThree id="3">This is Text Three</LevelThree></LevelTwo><LevelTwo><LevelThree id="4">This is Text Four</LevelThree><LevelThree id="5">This is Text Five</LevelThree><LevelThree id="6">This is Text Six</LevelThree></LevelTwo></LevelOne>

<?php$xml = new DOMDocument(); //建立一个DOMDocument$xml->load('cy.xml'); //Php指定需要读取xml文件的位置$LevelOne = $xml->getElementsByTagName('LevelOne');//按照名称取得节点,返回所有节点的集合,不过这里这样读LevelOne是没有意义的....$LevelOne = $xml->getElementsByTagName('LevelOne')->item(0);//返回第一个LevelOne节点中的内容$LevelTwo = $LevelOne->getElementsByTagName('LevelTwo'); //按照名称取得节点,返回所有LevelTwoforeach ( $LevelTwo as $Content )//循环读出所有LevelTwo,并在循环里,把LevelTwo用Content表示{$LevelThree = $Content->getElementsByTagName('LevelThree');//返回所有LevelThreeforeach ( $LevelThree as $Concert ){$name = $Concert->nodeName;//节点名称$value = $Concert->nodeValue;//节点值$id = $Concert->getAttribute('id');//"id"属性值echo $name."<br />";echo $value."<br />";echo $id."<br />";}}?>

$main=$doc->getElementsByTagName('main');返回的是一个集合 需要foreach遍历
$main=$doc->getElementsByTagName('main')->item(0)返回的是一个具体的节点 如果有多个<main></main>返回第一个
$name=$title->nodeName;//节点名title、list等
$value=$title->nodeValue;//节点值

http://www.ibm.com/developerworks/cn/opensource/os-xmldomphp/
<books>  <book>  <author>Jack Herrington</author>  <title>PHP Hacks</title>  <publisher>O'Reilly</publisher>  </book>  <book>  <author>Jack Herrington</author>  <title>Podcasting Hacks</title>  <publisher>O'Reilly</publisher>  </book>  </books>

<?php  $doc = new DOMDocument();  $doc->load( 'books.xml' );    $books = $doc->getElementsByTagName( "book" );  foreach( $books as $book )  {  $authors = $book->getElementsByTagName( "author" );  $author = $authors->item(0)->nodeValue;    $publishers = $book->getElementsByTagName( "publisher" );  $publisher = $publishers->item(0)->nodeValue;    $titles = $book->getElementsByTagName( "title" );  $title = $titles->item(0)->nodeValue;    echo "$title - $author - $publisher\n";  }  ?>

读书人网 >XML SOAP

热点推荐