【问题标题】:PHP Array generated from Xpath Query - Trying to extract data从 Xpath 查询生成的 PHP 数组 - 尝试提取数据
【发布时间】:2011-06-14 02:54:27
【问题描述】:

我目前正在尝试从 SIMPLEXML/XPATH 查询生成的数组中提取值。我的尝试没有成功,如果有人可以看一下,将不胜感激。

我只想提取 ReclaimDate。我在this post 上尝试了一些功能和一些建议,但没有成功。

Array
(
[0] => Array
    (
        [0] => SimpleXMLElement Object
            (
                [@attributes] => Array
                    (
                        [ReclaimDate] => 05/15/2008
                        [ReclaimPrice] => 555555555
                        [_Owner] => ownername
                    )

            )

    )

【问题讨论】:

  • 您可能正在寻找类似(string)$myvar[0][0]['ReclaimDate'] 的东西——如果您可以提供一个简短的示例文档和示例代码,那么提供一个保证有效的解决方案会更容易。顺便说一句,您链接的 SO 帖子似乎与 SimpleXML 无关,因此可能没有帮助。
  • 你能把响应数据(或它的 URL)和/或你用来获取这个数据的 PHP 作为 SimpleXMLElement 发布吗?

标签: php xml arrays xpath simplexml


【解决方案1】:

如果我不得不试一试,我同意@Frank Farmer 所说的应该有效:

    // if $myVar is what you print_r'ed
    echo (string)$myVar[0][0]['ReclaimDate'];

或者这个

    echo (string)$myVar[0][0]->attributes('ReclaimDate');

http://www.php.net/manual/en/simplexml.examples-basic.php#example-4587

【讨论】:

    【解决方案2】:

    感谢 Frank Farmer 和 Dan Beam,此问题得以解决。

    这行得通:echo (string)$check_reo[0][0]['ReclaimDate']

    对于希望使用 SimpleXML 和 XPATH 从 XML 文件中提取和编写一些基本逻辑的人来说,这对我有用。

    $xmlstring = <<<XML <?xml version='1.0' standalone='yes'?> <YOURXMLGOESHERE>TEST</YOURXMLGOESHERE> XML;

    $xpathcount = simplexml_load_string($xmlstring); // Load XML for XPATH Node Counts

    $doc = new DOMDocument(); // Create new DOM Instance for Parsing

    $xpathcountstr = $xpathcount->asXML(); // Xpath Query

    $doc->loadXML($xpathcountstr); // Load Query Results

    $xpathquery = array($xpathcount->xpath("//XMLNODEA[1]/XMLNODEB/*[name()='KEYWORDTOCHECKIFXMLCEXISTS']"));

    print_r ($xpathquery) // CHECK Array that is returned from the XPATH query

    `数组 ( [0] => 数组 ( [0] => SimpleXMLElement 对象 ( [@attributes] => 数组 ( [回收日期] => 05/15/2008 [回收价格] => 555555555 [_Owner] => 所有者名 )

            )
    
    ) // Array RETURNED`
    

    echo (string)$xpathquery[0][0]['ReclaimDate'] // EXTRACT THE VALUE FROM THE ARRAY COLUMN;

    这个网站帮助我更好地理解了 XPATH 如何使用比我以前知道的更多的功能非常轻松地搜索 XML。

    http://zvon.org/xxl/XPathTutorial/Output/examples.html

    这是对我有用的简单 XML 函数

    $xmlread = simplexml_load_string($xmlstring, "simple_xml_extended");

    `class simple_xml_extended extends SimpleXMLElement { // 读取 XML 并获取属性 公共函数属性($名称){ foreach($this->Attributes() as $key=>$val) { 如果($key == $name) 返回(字符串)$val;

        }
    }
    

    }`

    这是提取具有基于属性的 XML 结果的单个值时的函数操作

    $GETVAR1 = $xmlread->XMLNODE1->XMLNODE2->XMLNODE3->XMLNODE4->XMLNODE5[0]->Attribute('XMLNODE5ATTRIBUTE');

    这可能不是最有效或最好的方法,但它最终为我工作。希望这可以帮助那些仍然不清楚 SIMPLEXML 和 XPATH 的人。

    进一步了解的附加链接:http://www.phpfreaks.com/tutorial/handling-xml-data

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 2013-04-05
      相关资源
      最近更新 更多