无法解析PHP中的所有XML标记

时间:2012-03-15 07:26:35

标签: php xml parsing line

我是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 个答案:

答案 0 :(得分:2)

关闭

标签
  <widgetlist> 
xml文件中缺少

答案 1 :(得分:0)

您缺少最终标记,widgetlist。另外,创建一个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");
}