有许多技术可用于用 PHP 读取和编写 XML。本文提供了三种方法读取 XML:使用 DOM 库、使用 SAX 解析器和使用正则表达式。还介绍了使用 DOM 和 PHP 文本模板编写 XML。
有许多技术可用于用 PHP 读取和编写 XML。本文提供了三种方法读取 XML:使用 DOM 库、使用 SAX 解析器和使用正则表达式。还介绍了使用 DOM 和 PHP 文本模板编写 XML。
文章引用地址:
http://www.ibm.com/developerworks/cn/opensource/os-xmldomphp
![](/Images/OutliningIndicators/ContractedBlock.gif)
//DOM解析XML
1![](/Images/OutliningIndicators/None.gif)
2
$doc = new DOMDocument();
3
$doc->load("flight.xml");
4
$elements = $doc->getElementsByTagName('flight');
5![](/Images/OutliningIndicators/None.gif)
6
foreach($elements as $element)
7
{
8
$ids = $element->getElementsByTagName("id");
9
$id = $ids->item(0)->nodeValue;
10
echo $id."<BR/>";
11![](/Images/OutliningIndicators/None.gif)
12
}
13
14
$cabins = $doc->getElementsByTagName('cabin');
15
16
echo "=============================<BR/>";
17
foreach($cabins as $cabin)
18
{
19
$cabin_ids = $cabin->getElementsByTagName("flightid");
20
$cabin_id = $cabin_ids->item(0)->nodeValue;
21
echo $cabin_id."<BR/>";
22![](/Images/OutliningIndicators/None.gif)
23
}
![](/Images/OutliningIndicators/ContractedBlock.gif)
//SAX解析XML
1
$g_books = array();
2
$g_elem = null;
3
4
function startElement( $parser, $name, $attrs )
5
{
6
global $g_books, $g_elem ,$g_books1, $g_elem1;
7
if ( $name == 'FLIGHT' ) $g_books []= array();
8
$g_elem = $name;
9
10
if ( $name == 'CABIN' ) $g_books1 []= array();
11
$g_elem1 = $name;
12
}
13
14
function endElement( $parser, $name )
15
{
16
global $g_elem;
17
$g_elem = null;
18
19
global $g_elem1;
20
$g_elem1 = null;
21
}
22
23
function textData( $parser, $text )
24
{
25
global $g_books, $g_elem ,$g_books1, $g_elem1;
26
if ( $g_elem == 'ID' ||
27
$g_elem == 'DATE' ||
28
$g_elem == 'PLANESTYLE' )
29
{
30
$g_books[ count( $g_books ) - 1 ][ $g_elem ] = $text;
31
//echo count($g_books)."===".$g_elem."++++".$text."<BR/>";
32
}
33
34
35
if ( $g_elem == 'FLIGHTID' ||
36
$g_elem == 'CODE' ||
37
$g_elem == 'CABINTYPE' )
38
{
39
$g_books1[ count( $g_books1 ) - 1 ][ $g_elem1 ] = $text;
40
//echo count($g_books)."===".$g_elem."++++".$text."<BR/>";
41
}
42
43
44
}
45
46
$parser = xml_parser_create();
47
48
xml_set_element_handler( $parser, "startElement", "endElement" );
49
xml_set_character_data_handler( $parser, "textData" );
50
51
$f = fopen('flight.xml','r');
52
53
while(!feof($f))
54
{
55
$data .= fread($f,filesize('flight.xml'));
56
}
57
58![](/Images/OutliningIndicators/None.gif)
59
xml_parse( $parser, $data);
60
61
xml_parser_free( $parser );
62
63
foreach( $g_books as $book )
64
{
65
echo $book['ID']." - ".$book['DATE']." - ";
66
echo $book['PLANESTYLE']."\n";
67
}
68![](/Images/OutliningIndicators/None.gif)
69
//=========================
70
foreach( $g_books1 as $book1 )
71
{
72
echo $book1['FLIGHTID']." - ".$book1['CODE']." - ";
73
echo $book1['CABINTYPE']."\n";
74
}
75![](/Images/OutliningIndicators/None.gif)
一个据说不错的xml解析类:
http://blog.s135.com/read.php/253.htm