TYPO3 CMS  TYPO3_6-2
XML.php
Go to the documentation of this file.
1 <?php
2 
33  function init($xml_string, $namespace_map)
34  {
35  if (!$this->setXML($xml_string)) {
36  return false;
37  }
38 
39  foreach ($namespace_map as $prefix => $uri) {
40  if (!$this->registerNamespace($prefix, $uri)) {
41  return false;
42  }
43  }
44 
45  return true;
46  }
47 
61  function registerNamespace($prefix, $uri)
62  {
63  // Not implemented.
64  }
65 
76  function setXML($xml_string)
77  {
78  // Not implemented.
79  }
80 
94  function &evalXPath($xpath, $node = null)
95  {
96  // Not implemented.
97  }
98 
107  function content($node)
108  {
109  // Not implemented.
110  }
111 
121  function attributes($node)
122  {
123  // Not implemented.
124  }
125 }
126 
137  function Auth_Yadis_domxml()
138  {
139  $this->xml = null;
140  $this->doc = null;
141  $this->xpath = null;
142  $this->errors = array();
143  }
144 
145  function setXML($xml_string)
146  {
147  $this->xml = $xml_string;
148  $this->doc = @domxml_open_mem($xml_string, DOMXML_LOAD_PARSING,
149  $this->errors);
150 
151  if (!$this->doc) {
152  return false;
153  }
154 
155  $this->xpath = $this->doc->xpath_new_context();
156 
157  return true;
158  }
159 
160  function registerNamespace($prefix, $uri)
161  {
162  return xpath_register_ns($this->xpath, $prefix, $uri);
163  }
164 
165  function &evalXPath($xpath, $node = null)
166  {
167  if ($node) {
168  $result = @$this->xpath->xpath_eval($xpath, $node);
169  } else {
170  $result = @$this->xpath->xpath_eval($xpath);
171  }
172 
173  if (!$result) {
174  $n = array();
175  return $n;
176  }
177 
178  if (!$result->nodeset) {
179  $n = array();
180  return $n;
181  }
182 
183  return $result->nodeset;
184  }
185 
186  function content($node)
187  {
188  if ($node) {
189  return $node->get_content();
190  }
191  }
192 
193  function attributes($node)
194  {
195  if ($node) {
196  $arr = $node->attributes();
197  $result = array();
198 
199  if ($arr) {
200  foreach ($arr as $attrnode) {
201  $result[$attrnode->name] = $attrnode->value;
202  }
203  }
204 
205  return $result;
206  }
207  }
208 }
209 
220  function Auth_Yadis_dom()
221  {
222  $this->xml = null;
223  $this->doc = null;
224  $this->xpath = null;
225  $this->errors = array();
226  }
227 
228  function setXML($xml_string)
229  {
230  $this->xml = $xml_string;
231  $this->doc = new DOMDocument;
232 
233  if (!$this->doc) {
234  return false;
235  }
236 
237  // libxml_disable_entity_loader (PHP 5 >= 5.2.11)
238  if (function_exists('libxml_disable_entity_loader') && function_exists('libxml_use_internal_errors')) {
239  // disable external entities and libxml errors
240  $loader = libxml_disable_entity_loader(true);
241  $errors = libxml_use_internal_errors(true);
242  $parse_result = @$this->doc->loadXML($xml_string);
243  libxml_disable_entity_loader($loader);
244  libxml_use_internal_errors($errors);
245  } else {
246  $parse_result = @$this->doc->loadXML($xml_string);
247  }
248 
249  if (!$parse_result) {
250  return false;
251  }
252 
253  if (isset($this->doc->doctype)) {
254  return false;
255  }
256 
257  $this->xpath = new DOMXPath($this->doc);
258 
259  if ($this->xpath) {
260  return true;
261  } else {
262  return false;
263  }
264  }
265 
266  function registerNamespace($prefix, $uri)
267  {
268  return $this->xpath->registerNamespace($prefix, $uri);
269  }
270 
271  function &evalXPath($xpath, $node = null)
272  {
273  if ($node) {
274  $result = @$this->xpath->query($xpath, $node);
275  } else {
276  $result = @$this->xpath->query($xpath);
277  }
278 
279  $n = array();
280 
281  if (!$result) {
282  return $n;
283  }
284 
285  for ($i = 0; $i < $result->length; $i++) {
286  $n[] = $result->item($i);
287  }
288 
289  return $n;
290  }
291 
292  function content($node)
293  {
294  if ($node) {
295  return $node->textContent;
296  }
297  }
298 
299  function attributes($node)
300  {
301  if ($node) {
302  $arr = $node->attributes;
303  $result = array();
304 
305  if ($arr) {
306  for ($i = 0; $i < $arr->length; $i++) {
307  $node = $arr->item($i);
308  $result[$node->nodeName] = $node->nodeValue;
309  }
310  }
311 
312  return $result;
313  }
314  }
315 }
316 
319 
330 {
332  $__Auth_Yadis_defaultParser = $parser;
333 }
334 
336 {
337  return array('dom' => 'Auth_Yadis_dom',
338  'domxml' => 'Auth_Yadis_domxml');
339 }
340 
348 {
350 
351  if (isset($__Auth_Yadis_defaultParser)) {
353  }
354 
355  foreach(Auth_Yadis_getSupportedExtensions() as $extension => $classname)
356  {
357  if (extension_loaded($extension))
358  {
359  $p = new $classname();
361  return $p;
362  }
363  }
364 
365  return false;
366 }
367 
368 
registerNamespace($prefix, $uri)
Definition: XML.php:61
Auth_Yadis_dom()
Definition: XML.php:220
& evalXPath($xpath, $node=null)
Definition: XML.php:165
registerNamespace($prefix, $uri)
Definition: XML.php:266
attributes($node)
Definition: XML.php:299
Auth_Yadis_domxml()
Definition: XML.php:137
registerNamespace($prefix, $uri)
Definition: XML.php:160
attributes($node)
Definition: XML.php:121
content($node)
Definition: XML.php:107
content($node)
Definition: XML.php:292
global $__Auth_Yadis_defaultParser
Definition: XML.php:317
content($node)
Definition: XML.php:186
Auth_Yadis_setDefaultParser($parser)
Definition: XML.php:329
setXML($xml_string)
Definition: XML.php:145
init($xml_string, $namespace_map)
Definition: XML.php:33
attributes($node)
Definition: XML.php:193
setXML($xml_string)
Definition: XML.php:76
if($list_of_literals) if(!empty($literals)) if(!empty($literals)) $result
Analyse literals to prepend the N char to them if their contents aren&#39;t numeric.
& evalXPath($xpath, $node=null)
Definition: XML.php:271
setXML($xml_string)
Definition: XML.php:228
Auth_Yadis_getSupportedExtensions()
Definition: XML.php:335
& evalXPath($xpath, $node=null)
Definition: XML.php:94
Auth_Yadis_getXMLParser()
Definition: XML.php:347