- 注册时间
- 2011-10-23
- 最后登录
- 2011-10-31
- 阅读权限
- 70
- 积分
- 1243
- 精华
- 0
- 帖子
- 401
 
升级   12.15%
|
Php读取XML在html上浮现
当初供给一种很简便的方式用PHP读取XML:XML文件(cy.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文件(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输出结果:1czbin xml版块axml的相关文章2czbin php版块bphp的相关文章3czbin ajax版块cajax的相干文章怎么样?确实很简单吧!
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('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 />";}}?>cy.php输出结果:123456789===============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('main');foreach( $main as $main){$list = $main->getElementsByTagName( "list" );foreach ( $list as $list ){$value = $list->firstChild->nodeValue;echo $value."<br />";}$title = $main->getElementsByTagName( "title" );foreach ( $title as $title ){$value = $title->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 />";}}?>cy.php输出结果:123a456b789想一下,如何读出<m>中<title></title>的值?
用Php读取XML最简略的情况:XML文件(cy.xml)如下:<?xml version="1.0" encoding="gb2312"?><xml><list>1</list><list>2</list><list>3</list></xml>Php文件(cy.php)如下:<?php$xml = new DOMDocument();$xml->load('cy.xml');foreach($xml->getElementsByTagName('list') as $list){$value = $list->firstChild->nodeValue;echo $value."<br />";}?>cy.php的运行成果:123=============用Php读取XML略微庞杂一点的情况:cy.xml如下:<?xml version="1.0" encoding="gb2312"?><xml><main><list>1</list><list>2</list><list>3</list></main></xml>cy.php如下(和第一种情形不任何变更):<?php$xml = new DOMDocument();$xml->load('cy.xml');foreach($xml->getElementsByTagName('list') as $list){$value = $list->firstChild->nodeValue;echo $value."<br />";}?>cy.php的运行结果跟第一次也雷同:123
Php读取XML第三种情况:XML文件(cy.xml)如下:<?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></xml>Php文件(cy.php)如下(和第一次仍然没有变化):<?php$xml = new DOMDocument();$xml->load('cy.xml');foreach($xml->getElementsByTagName('list') as $list){$value = $list->firstChild->nodeValue;echo $value."<br />";}?>cy.php的输出结果:123456===========Php读取XML第四种情况,坚持cy.xml不变,改变cy.php:XML文件(cy.xml)如下:<?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></xml>Php文件(cy.php)如下:<?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 />";}}?>cy.php输出结果:123456为什么两次的cy.php不同,但输出结果是相同的?让我们来看下一个例子==============Php读取XML第五种情况,转变cy.xml,使cy.php保持第四种情况:XML文件(cy.xml)如下:<?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('main');foreach( $main as $main){$list = $main->getElementsByTagName( "list" );foreach ( $list as $list ){$value = $list->firstChild->nodeValue;echo $value."<br />";}}?>cy.php输出结果为:123456为什么<m><list>7</list><list>8</list><list>9</list></m>中的7,8,9没有被读出来?因为我们的cy.php只读取<main></main>标志中的内容.<m></m>标记中的内容是不会被读取的.我们这里所提到的"标记",在XML里被称做"节点";对于"节点"的相关概念,我们将在当前阐明.
Php读取XML再通过一个例子坚固一下:XML文件(cy.xml)如下:<?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文件(cy.php)如下:<?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 />";}}?>假如用$LevelOne = $xml->getElementsByTagName('LevelOne')这样的方式取得节点,那么,读取里面的内容,须要用foreach 循环,由于$LevelOne = $xml->getElementsByTagName ('LevelOne')返回的,是一个集合,并不是一个详细的节点----仅管叫做LevelOne的节点只有一个....如果用$LevelOne = $xml->getElementsByTagName('LevelOne')->item(0)这样的方法取得节点,那么读取里面的内 容,能够直接$LevelOne->xxxxxx,因为这样返回的是一个详细的节点。 |
|