Невозможно разобрать все теги XML в PHP - PullRequest
0 голосов
/ 15 марта 2012

Я новичок в XML и PHP и не могу разобрать все теги. Я пытался найти решение и не смог его найти.

Файл XML -

<?xml version="1.0"  encoding="UTF-8"?>
    <widgetlist>
     <widget id='1'>
       <content page='page1'>
          <row type='header'>
         <col>
                 <h1>Avinash</h1>
                 <h3>Second element</h3>
             </col>
          </row>
          <row type='content'>
            <col>
                  <p>Is a php programmer</p>
                </col>
          </row>

         <row type='content'>
            <col>
                   <h2>Heading 2</h2>
                </col>
         </row>

         <row type='footer'>
           <col>
                   <small>Thank You</small>
               </col>
         </row>
      </content>
   </widget>

PHP-файл -


<?php
    $xml        =   simplexml_load_file("product.xml");
    $products   =   $xml->xpath("//*[@type]");

    var_dump($products);    

    for($i=0;$i<count($products);$i++)
    {
        print_r($i);
        $count  =   count($products[$i]->col);
        print_r("   ".$count);
        print_r("\n");
        $col    =   (array)$products[$i]->col;
        $tag    =   key((array)$products[$i]->col);     

        echo "<".$tag.">".$products[$i]->col->$tag."</".$tag.">";
    }
?>

Любая помощь или руководство действительно будут полезны. Спасибо. А также, пожалуйста, помогите мне с лучшими практиками в xml, если это возможно, чтобы улучшить синтаксический анализ.

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

закрывающий тег для

  <widgetlist> 

отсутствует в XML-файле

0 голосов
/ 15 марта 2012

Вам не хватает окончательного тега, списка виджетов.Также может быть хорошей идеей создать XSD-файл и заставить PHP проверять соответствие XML.

Это может быть достигнуто следующим образом

$request = new DOMDocument();
$request->loadXML($HTTP_RAW_POST_DATA, LIBXML_NOBLANKS);
if (!$request->schemaValidate('xml/Request.xsd'))
{
  ErrorReply("InvalidRequest", "Schema validation returned false");
}
...