За последние 24 часа нас посетил 17451 программист и 1608 роботов. Сейчас ищут 918 программистов ...

Помогите с разбором XML

Тема в разделе "PHP для новичков", создана пользователем Akuma, 16 янв 2010.

  1. Akuma

    Akuma Активный пользователь

    С нами с:
    17 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Между небом и асфальтом
    Код (Text):
    1. <?xml version="1.0"?>
    2. <RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"
    3.          xmlns:NC="http://home.netscape.com/NC-rdf#"
    4.          xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    5.   <RDF:Description RDF:about="rdf:#$tCzVz2"
    6.                    em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
    7.                    em:minVersion="3.0"
    8.                    em:maxVersion="3.0.*" />
    9.   <RDF:Description RDF:about="urn:mozilla:install-manifest"
    10.                    em:id="bookmarkpreviews@mozdev.org"
    11.                    em:name="Bookmark Previews"
    12.                    em:version="0.7.4"
    13.                    em:creator="John Marshall"
    14.                    em:description="Bookmark Previews adds an album view and thumbnail view to the bookmarks manager."
    15.                    em:homepageURL="http://bookmarkpreviews.mozdev.org/"
    16.                    em:optionsURL="chrome://bookmarkpreviews/content/options.xul"
    17.                    
    18.     >
    19.     <em:targetApplication RDF:resource="rdf:#$tCzVz2"/>
    20.   </RDF:Description>
    21. </RDF:RDF>
    Добрый день, есть вот такой XML, подскажите пожалуйста, как получить доступ к атрибутам RDF:Description ? Т.е. к em:name, em:description и т.д.

    использую SimpleXML, который уперся и не хочет получать эти атрибуты...

    Допустим, както так:
    Код (Text):
    1. $rdf = $xml->xpath('//RDF:Description');
    2. $a = $rdf[0]->attributes()
    Поидее теперь $a - ассоциативный массив...но нет, это не так(var_dump):
    Код (Text):
    1. object(SimpleXMLElement)#8 (0) { }
    И что с ним делать, я не пойму..(((
     
  2. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    foreach пробежись и выведи на экран свойства этого объекта.

    А вообще http://php.net/simplexmlelement
     
  3. Akuma

    Akuma Активный пользователь

    С нами с:
    17 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Между небом и асфальтом
    Пробовал тогда, попробовал еще раз, функция не выдает вообще ничего, даже ошибок :(

    Код (Text):
    1. $rdf = $xml->xpath('//RDF:Description');
    2. $a = $rdf[0]->attributes();
    3.  
    4. foreach($a as $k => $v){
    5.     echo $k.' '.$v.'<br/>';
    6. }
    Читал уже....может у меня настройки пхп какието кривые? Я просто это все делаю не на хостинге, а локальным апачем :) Хотя ничего такого не настраивал, чтобы гдето напартачить...
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    PHP:
    1. <?php
    2. $xmlstring = <<<'HDC'
    3. <RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"
    4.          xmlns:NC="http://home.netscape.com/NC-rdf#"
    5.          xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    6.   <RDF:Description RDF:about="rdf:#$tCzVz2"
    7.                    em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
    8.                    em:minVersion="3.0"
    9.                    em:maxVersion="3.0.*" />
    10.   <RDF:Description RDF:about="urn:mozilla:install-manifest"
    11.                    em:id="bookmarkpreviews@mozdev.org"
    12.                    em:name="Bookmark Previews"
    13.                    em:version="0.7.4"
    14.                    em:creator="John Marshall"
    15.                    em:description="Bookmark Previews adds an album view and thumbnail view to the bookmarks manager."
    16.                    em:homepageURL="http://bookmarkpreviews.mozdev.org/"
    17.                    em:optionsURL="chrome://bookmarkpreviews/content/options.xul"
    18.                    
    19.     >
    20.     <em:targetApplication RDF:resource="rdf:#$tCzVz2"/>
    21.   </RDF:Description>
    22. </RDF:RDF>
    23. HDC;
    24.  
    25. $xml = new DOMDocument();
    26. $xml->loadXML($xmlstring);
    27. $xpath = new DOMXPath($xml);
    28. $rdf = $xpath->query('//RDF:Description');
    29. foreach($rdf as $key => $node) {
    30.     foreach($node->attributes as $name => $value) {
    31.         var_dump($name, $value->value);
    32.         echo '<hr>';
    33.     }
    34. }
    С SimpleXML разбирайся сам.
     
  5. Akuma

    Akuma Активный пользователь

    С нами с:
    17 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Между небом и асфальтом
    Спасибо :)