【问题标题】:Accessing Attributes of SimpleXMLElement Object访问 SimpleXMLElement 对象的属性
【发布时间】:2012-10-17 23:49:29
【问题描述】:

我有以下代码:

     $doc=new DOMDocument(); 
     $doc->loadHTML($content); 
     $xml=simplexml_import_dom($doc); // just to make xpath more simple 
     //$images=$xml->xpath('(//img[@class = "thumbimage"])[1]');

     for($x=1;$x<=5;$x++)
     {
                      $images[] = $xml->xpath('(//img[@class = "thumbimage"])['.$x.']'); 

     }

我转储 $images 我得到了这种类型的数组,请参阅底部的屏幕截图

  [array](unknown name)
   - [array]0
     -[SimpleXMLElement Object] 0
      -Properties
        -[array]@attributes
              [string]src = "thestring"
      -Methods
        __construct
        __addAttribute etc

我想从每个 $images[] 数组中获取“字符串”

请看附图:

【问题讨论】:

  • 我添加了 PHP(因为您的代码是 PHP,尽管您的问题不是 PHP 特定的,所以也许我不应该有)和 XML 标记。
  • 我添加了更多代码,以便您可以通过 api 调用呈现 xml

标签: php xml arrays xpath simplexml


【解决方案1】:

我认为您只需要正确的 XPath,如果您发布您正在处理的 XML,这将更容易提供(我只能从您提供的图像中推断出一些东西)。无论如何,您正在使用 img[@class= '...'] 所以我假设我们正在处理的元素名称称为 img

在这种情况下,您需要的 xpath 是

"//img@src"

使用@ 选择所有img 元素的属性。 http://www.w3schools.com/xpath/xpath_syntax.asp

【讨论】:

  • //img@src 不会带回结果,这会带回第一张图像:$images=$xml->xpath('(//img[@class= "thumbimage"])[1 ]');我需要前五张图片。我不熟悉直接获取这些属性的语法...
  • XPath "//img@src" 应该返回所有 img 元素的 src 属性。也许您应该发布您的 XML(不是全部,只要我们足够了解您需要什么)。
【解决方案2】:

您可以将属性作为数组元素访问:

$images[$i]['src']

【讨论】:

  • 我试过了,但它只带回了具有未知名称的 SimpleXMLObject 及其方法。
【解决方案3】:
  for($x=0;$x<=5;$x++)
               {
                $k = $x + 1;
                $images[] = $xml->xpath('(//img[@class = "thumbimage"])['.$k.']'); 
                $url[] = (string)$images[$x][0]['src'];
               }

这就是我想要的结果。

【讨论】:

    猜你喜欢
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2021-03-05
    • 1970-01-01
    相关资源
    最近更新 更多