手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP读取XML值的代码(推荐)
PHP读取XML值的代码(推荐)
摘要:用Php读取XML最简单的情况:XML文件(cy.xml)如下:复制代码代码如下:123Php文件(cy.php)如下:复制代码代码如下:l...

用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的运行结果:

1

2

3

=============

用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的运行结果和第一次也相同:

1

2

3

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的输出结果:

1

2

3

4

5

6

===========

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输出结果:

1

2

3

4

5

6

为什么两次的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输出结果为:

1

2

3

4

5

6

为什么

<m>

<list>7</list>

<list>8</list>

<list>9</list>

</m>

中的7,8,9没有被读出来?

因为我们的cy.php只读取<main></main>标记中的内容.<m></m>标记中的内容是不会被读取的.

我们这里所提到的”标记”,在XML里被称做”节点”;

关于”节点”的相关概念,我们将在以后说明.

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输出结果:

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('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输出结果:

1

2

3

a

4

5

6

7

8

9

想一下,如何读出<m>中<title></title>的值?

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'); //按照名称取得节点,返回所有LevelTwo

foreach ( $LevelTwo as $Content )//循环读出所有LevelTwo,并在循环里,把LevelTwo用Content表示

{

$LevelThree = $Content->getElementsByTagName('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('LevelOne')这样的方式取得节点,那么,读取里面的内容,需要用foreach 循环,因为$LevelOne = $xml->getElementsByTagName ('LevelOne')返回的,是一个集合,并不是一个具体的节点—-仅管叫做LevelOne的节点只有一个….

如果用$LevelOne = $xml->getElementsByTagName('LevelOne')->item(0)这样的方式取得节点,那么读取里面的内 容,可以直接$LevelOne->xxxxxx,因为这样返回的是一个具体的节点。

现在提供一种很简便的方法用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输出结果:

1

czbin xml版块

a

xml的相关文章

2

czbin php版块

php的相关文章

3

czbin ajax版块

c

ajax的相关文章

怎么样?的确很简单吧!

【PHP读取XML值的代码(推荐)】相关文章:

PHP cURL初始化和执行方法入门级代码

PHP4引用文件语句的对比

PHP文件读取功能的应用实例

PHP脚本的10个技巧(3)

在PHP中使用灵巧的体系结构

我的论坛源代码(五)

PHP脚本的10个技巧(8)

用PHP读取IMAP邮件

PHP系统流量分析的程序

我的论坛源代码(十)

精品推荐
分类导航