【问题标题】:php DomDocument + directly access xml elementphp DomDocument + 直接访问 xml 元素
【发布时间】:2011-12-16 15:42:25
【问题描述】:

谁能告诉我最快、资源最少的方法,我可以通过它查看“列名=错误”是否存在?

我不想解析文档,只是检查元素是否存在。

提前致谢,

<?xml version="1.0" encoding="UTF-8"?>
<Table>
<Columns Items="4">
<Column Name="Error" Type="String" />
<Column Name="Description" Type="String" />
<Column Name="Cause" Type="String" />
<Column Name="Resolution" Type="String" />
</Columns>
<Rows Items="1">
<Row Error="2" Description="Unknown key" Cause="Unknown key" Resolution="Please check     the key is correct, it should be the in form AA11-AA11-AA11-AA11." />
</Rows>
</Table>

【问题讨论】:

    标签: php dom xml-parsing domdocument


    【解决方案1】:

    正如其他人所提到的,最不占用资源的是简单的strpos() 调用,但如果 XML 的确切格式发生变化,这可能会出错。一个完整的方法是使用 DOM,然后你可以尝试一个 xpath 查询...

    $xml = '...'
    $dom = new DomDocument();
    $dom->loadXML($xml);
    $xpath = new DOMXPath($dom);
    
    // returns NULL if no columns found with name="error"
    $err = $xpath->query('//Column[@Name="Error"]')->item(0);
    
    if ($err) {
      // there is a column with attribute Name="Error"
    }
    

    【讨论】:

      【解决方案2】:

      你有没有想过简单地使用strpos

      $xml= //xml data
      
      if(strpos($xml,'<Column Name="Error"') !== false){
          // its been found
      }
      

      编辑:添加 !==false 以允许 0 索引情况(无论如何都不应该在这里发生)

      【讨论】:

        猜你喜欢
        • 2014-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-25
        • 1970-01-01
        • 2015-02-23
        相关资源
        最近更新 更多