ホームページ > php教程 > php手册 > PHP は XML ファイルを操作します: 読み取り、表示

PHP は XML ファイルを操作します: 読み取り、表示

WBOY
リリース: 2016-06-21 08:59:08
オリジナル
1050 人が閲覧しました
この例のphpファイルはxmlファイルの内容を読み込んで表示します

以下はphpファイルの内容です。phpファイルとslashdot.xmlを同じフォルダに置くだけです。

$open_tags = array(
'STORY ' => >=> ''
,
'作者'=>
'
$close_tags = array(
'STORY'
=>
''

'TITLE'
=> '
'URL'
=> ''
'著者'
=> '
);
?>
//以下はデータを抽出するために定義された関数です: // 処理開始タグの属性は参照しますto // $attrs は多次元配列で、キー値は属性です。名前、値は属性の値です。
関数
startElement
(
$parser,
$name
, $attrs
=
''


){
グローバル
$open_tags, $ temp$current_tag ; $current_tag = $name

;
if ($format = $open_tags[$name

]) {
switch($name<🎜) >){ case
'STORY'
: echo ' 新しいストーリー: ' ; ブレーク; デフォルト:
ブレーク;}
}
}

// $current_tag は処理中のタグを示します。これは後でcharacterData 関数で使用します
/ /
// マークに遭遇すると、すべての一時変数をフラッシュし、次のマーク
'

'TITLE' => ''

'URL' => ''

'著者'=>
'
);
?>

//以下はデータを抽出するために定義された関数です:

// 開始タグの属性を処理します
// $attrs はキー値を持つ多次元配列が属性名で、その値が属性
関数 startElement($parser, $name, $attrs=''
) {
グローバル
$open_tags, $temp, $current_tag

$current_tag = $name
; ;
if (
$format = $open_tags[$name
]){
switch(
$name
){
case
'STORY'
:
echo
'新しいストーリー: '
; ;
デフォルト:
Break;
}
}
}


// $current_tag が示すタグ処理中です。これは後でcharacterData関数で使用します。//
// マークに遭遇すると、すべての一時変数をフラッシュし、次のマークの操作を準備することがわかります

関数 endElement($parser, $name, $attrs =''
){ グローバル
$close_tags$temp $current_tag
;if ($format = $close_tags[$name]){
switch(
$name
){
case
'STORY'
:
return_page($temp
);
$temp = ''
; デフォルト:
ブレーク; ;
}
}
}



// この関数に渡されるのは要素間のデータです //たとえば、Title Here の場合、$data は 'Title Here' と同じです

function
characterData( $parser, $data
){ グローバル
$current_tag
$temp$catID
switch(; $current_tag
){
case 'TITLE'
:
$temp
['タイトル'] = $data; >
$current_tag
=
; case ' URL'

:
$temp
['url'
] = $data; ケース '著者'
:
$temp
['著者'] =
$data

;
$current_tag
=
''
; デフォルト: ブレーク } } ?>
関数 return_page(){
グローバル
$temp
;
echo
'o .$temp['url'].'">'.$temp['タイトル'].'
'
;
echo
'作成者: '.$temp['作成者'].'
'
;
エコー
'------ - ---------'
;
エコー
'
'
;
}

// 解析内容
$xml_file = 'slashdot.xml'
;

// 文字セットを定義します。デフォルトは UTF- 8
$type = 'UTF-8'


// パーサーを作成します
$xml_parser
= xml_parser_create( $type
);

// 解析オプションを設定します
xml_parser_set_option
($xml_parser, XML_OPTION_CASE_FOLDING, true
); 🎜>
'UTF-8'
); 🎜>/ / 要素が見つかったときに呼び出す関数を PHP に指示します // これらの関数は要素の属性も処理します xml_set_element_handler($xml_parser
, 'startElement'

,
'endElement'

);
//文字データに対して呼び出す関数を PHP に指示しますxml_set_character_data_handler($xml_parser ,
'characterData'

); (!(
$fp
=
fopen($xml_file, 'r'
))) {
die(
"解析のために $xml_file ファイルを開けません!n"
);


//
while ($data = fread) をループしてファイル全体を解析します($fp, 4096
)) { if (!(
) >
$data = utf8_encode($data
))) { echo
'ERROR'."n"
} ; if (!

xml_parse
($xml_parser, $data, feof($fp
))) { die(
sprintf
( "XML エラー: %dnn 行目 %s"
,
xml_error_string
( xml_get_error_code($xml_parser
))、
xml_get_current_line_number
($xml_parser
))); } }



xml_parser_free
($xml_parser
);

?>



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート