-
Notifications
You must be signed in to change notification settings - Fork 79
/
Copy pathxml-parse.xml
149 lines (143 loc) · 4.6 KB
/
xml-parse.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 3db49ee0a331a657dd97b539a749f53d3965b593 Maintainer: hirokawa Status: ready -->
<!-- Credits: mumumu -->
<refentry xml:id="function.xml-parse" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>xml_parse</refname>
<refpurpose>XML ドキュメントの処理を開始する</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>xml_parse</methodname>
<methodparam><type>XMLParser</type><parameter>parser</parameter></methodparam>
<methodparam><type>string</type><parameter>data</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>is_final</parameter><initializer>&false;</initializer></methodparam>
</methodsynopsis>
<para>
<function>xml_parse</function> は XML ドキュメントを処理します。
設定されているイベントのハンドラが、必要に応じてコールされます。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>parser</parameter></term>
<listitem>
<para>
使用する XML パーサへのリファレンス。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>data</parameter></term>
<listitem>
<para>
処理するデータ。ドキュメントは、
<parameter>is_final</parameter> パラメータが設定され、
最後のデータが処理され &true; になるまで、新規のデータに関して
複数回 <function>xml_parse</function> をコールすることにより、
部分毎で処理することが可能です。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>is_final</parameter></term>
<listitem>
<para>
&true; が設定された場合、<parameter>data</parameter> は
この処理の間に送られた最後のデータということになります。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
成功した場合に 1、失敗した場合に 0 を返します。
</para>
<para>
処理が成功しなかった場合、エラー情報を
<function>xml_get_error_code</function>,
<function>xml_error_string</function>,
<function>xml_get_current_line_number</function>,
<function>xml_get_current_column_number</function> および
<function>xml_get_current_byte_index</function>
により取得可能です。
</para>
<note>
<para>
エンティティのエラーが報告されるのは、ドキュメントの最後で行われます。
つまり <parameter>is_final</parameter> が &true; に設定されている場合だけです。
</para>
</note>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
&xml.changelog.parser-param;
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example xml:id="xml_parse.example.chunked">
<title>巨大なXML文書を切り分けてパースする</title>
<para>
この例は、
どのようにして巨大なXML文書を読み取り、チャンクに分けて
パースするのかを示しています。
これにより、文書全体をメモリに置く必要がないようにします。
エラーハンドリングは例を簡単にするため省略しています。
</para>
<programlisting role="php">
<![CDATA[
<?php
$stream = fopen('large.xml', 'r');
$parser = xml_parser_create();
// ハンドラをセットアップする
while (($data = fread($stream, 16384))) {
xml_parse($parser, $data); // 現在のチャンクをパースする
}
xml_parse($parser, '', true); // パースを終了する
xml_parser_free($parser);
fclose($stream);
]]>
</programlisting>
</example>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->