Обработка XML'a

tolst

Новичок
Обработка XML'a

Народ, помогите пожалуеста...
У меня есть строка:

PHP:
$string=<<<EOF
<?xml version="1.0"?>
<w3s.response><reqn>20041018164705</reqn>
<invoice id="XXX" ts="123">
<orderid>130</orderid>
<customerwmid>123467753197</customerwmid>
...
</invoice>
...
</w3s.response>";
EOF;
Как мне вытащить XXX из всей этой белибирды...
Вернее как проще? регексами или юзать XML (хотя раньше я его не юзал)
Помогите пожалуеста, если рекексами, то подскажи пожилуеста как вырезать всё что после этого параметра и всё что до него....
Если XML то как именно?
Заранее огромное спасибо.
 

Alexandre

PHPПенсионер
Для начала ознакомся: DOM или SAX
PHP:
Пример обработки XMLя
<?php

$xmlString = '
           <g id="points_topo">
                 <use id="points_topo_0" x="586004" y="-1466437" />
                 <use id="points_topo_1" x="586197" y="-1467479" />
                 <use id="points_topo_2" x="586664" y="-1468697" />
                 <use id="points_topo_3" x="584905" y="-1473660" />
                 <use id="points_topo_4" x="585005" y="-1469216" />
           </g>';
     
       $docSVG = new DOMDocument;
       $docSVG->loadXML("$xmlString");
       
       $objectXPath = new DOMXPath($docSVG);
       $nodeList = $objectXPath->query("/g/use[@x > 586000]");
       
       $i = 0;
       while ( $node = $nodeList->item($i) )
       {
           echo "id = " . $node->getAttribute("id") . "<br/>\n";
           $i++;
       } 
?>
В твоем случае $objectXPath->query строка будет: w3s.response/invoice/@id
 

gromitus

Новичок
PHP:
$docSVG->loadXML("$xmlString");
- мне кажется нехорошим давать такие примеры.
 

Alexandre

PHPПенсионер
gromitus напиши в php.net - чтоб они переделали пример, предложи свой вариант.

мое дело - подсказать человеку - в какую сторону и как изучить проблему, а не решать за него задачу
 

[DAN]

Старожил PHPClub
gromitus, а что именно тебе показалось нехорошим?
 

SiMM

Новичок
[DAN], думаю, кавычки. Они там совершенно не к месту.
 

slach

Новичок
тебе invoice id самый первый или вообще все ?
если ВСЕ... и если XML очень большой (больше 100 - 200 кб)

по идее ... быстрее было бы через SAX распарсить
http://php.net/manual/en/ref.xml.php
 

Alexandre

PHPПенсионер
Автор оригинала: tony2001
такого текста в мануале не нахожу.
дайте ссылку.
ссылка

-~{}~ 20.10.04 14:39:

slachя дал человеку ссылку и на ДОМ и на САКС
думаю у него не большой xml,

все же для начинающего через $dom->query удобнее
чем писать обработчики функций.
 

BeGe

Вождь Апачей, блин (c)
PHP:
$string=<<<EOF
<?xml version="1.0"?>
<w3s>
<reqn>20041018164705</reqn>
<invoice id="XXX" ts="123">
<orderid>130</orderid>
<customerwmid>123467753197</customerwmid>
</invoice>
</w3s>";
EOF; 
$xml = simplexml_load_string($xmlstr);

echo (string)$xml->w3s->invoice['id'];

Убрал точку потому что не знаю как себе повёл бы simpleXML
работает только с php5

2guru - ебанутся.
 

gromitus

Новичок
Александр
PHP:
$docSVG->loadXML("$xmlString");
или
PHP:
$docSVG->loadXML($xmlString);
Интересно как написать пправильнее, и главное, что будет работать быстрее? Да, это не принципиально, согласен, но всё равно.

-~{}~ 22.10.04 17:06:

НЕ учат ведь писать так:
PHP:
$abc="Hello World"; echo("$abc");
 
Сверху