我在从SimpleXMLElement对象提取所需数据时遇到一些问题。 这是我正在使用的代码的基础知识:

curl_setopt( $ch, CURLOPT_URL, $URL );
$html = curl_exec( $ch );
$html = $tidy->parseString( $html, $tc, 'utf8' );
$tidy->cleanRepair();
$html = $tidy->body()->value;
$xml = new SimpleXMLElement( $html );

$xml = $xml->xpath( "//ul[@id='wxoptions']/li[3]/a" ); //Your XPATH

print_r( $xml );

这会导航到我想要的正确HTML元素,但会打印:

Array
(
    [0] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [href] => http://www.mylink.com
                    [title] => mylink
                )

            [0] => mylink
        )

)

我需要的值是该数组中的[href],“ http://www.mylink.com ”。 如何从包含的输出中提取出来? 我很困惑,对SimpleXMLElement和Xpath非常陌生。

===============>>#1 票数:0 已采纳

使用迭代和属性

foreach ( $xml->xpath( "//ul[@id='wxoptions']/li[3]/a" ) as $node)
{
  $href = $node->attributes("href");
}

或直接称为:

$href = $xml[0]->attributes("href");

  ask by dremme translate from so

未解决问题?本站智能推荐:

1回复

从元描述中获取SimpleXMLElement [重复]

这个问题已经在这里有了答案: 如何通过php获取网页的开放图谱协议? 6个答案 我正在尝试检索一些包含在SimpleXMLElement中的元数据。 我正在使用XPATH,但我一直在努力获得自己感兴趣的价值。 以下是网页标题的摘录(摘自: http : /
1回复

具有以下同级元素的强元素后的xpath文本不起作用

我检查了很多例子 给出正确的答案,以便在收到强标签后接收文本。 我用星号标记了我感兴趣的文本: 我总是得到的是[strong]的内容,而不是[li] [/ li]中没有[strong]内容的文本: 如果您指出我的错误,我将很高兴...
2回复

使用SimpleXML获取具有“输入”标签且类型为“密码”的“表单”元素?

嗨,我有许多形式的网页数据(将html转换成xml),我想抓取其中具有类型为password的输入标签的表单(不必是直接子级)。 考虑下面的示例,数据存储在变量$ html中 我试过了 但是没有成功:( 谢谢。
1回复

使用SimpleXMLElement和xpath从某些xml子元素中获取所有子元素

我有像这样的xml: 和这样的PHP代码: b_names包含2个值而不是1的数组。第一个保存books-> book-> name,第二个保存disks-> disk-> name。 您能解释一下我在做什么错吗?我怎么能找到只有一个元素的孩子?
1回复

从SimpleXMLElement对象的xpath引用中提取数据

我正在尝试将XML文件读入数组,但遇到了一些麻烦。 到目前为止,这是我的代码: 但是当我执行print_r($results) ,输出的是: 如何直接从SimpleXMLElement Object获取数据并将其存储在数组中,而不是这样做呢? 我尝试以$u->$fiel
1回复

如何在SimpleXMLElement中的数组上使用XPath?

我似乎遇到了问题。 考虑以下XML结构: 它返回一个名为“数据”的SXE对象,其中包含一个数组“行”,该数组由更多SXE对象组成。 我正在使用XPath,我想找到具有“ id = 2”的行。 但是我认为您无法通过XPath遍历数组,那么我该怎么办? 编辑:哦,我找到了答案
2回复

SimpleXMLElement在一行中获取第一个XPath元素[重复]

这个问题在这里已有答案: 在PHP 1答案中 仅选择xpath结果集的第一项 只是试图找到一个更短的方法来做到这一点: 我正在使用simpleXMLElement来解析xml文件,当我知道我想要什么节点时,它必须调用两行来处理数组。 当前代码:
1回复

SimpleXmlElement和XPath,获取空数组()

我从谷歌结帐响应中解析XML时遇到了一些麻烦。 XML直接来自谷歌服务器,所以XML本身没有问题。 我想掌握所有新订单通知标签 我试过这个,但每次都返回一个空数组()。 一个XML snipet(刚刚开始)
3回复

Xpath表达式使用SimpleXMLElement获得未知的元素名称

我试图编写一个xpath表达式,以根据一些条件从xml中获取元素名称。 iam之后要做的是获取具有子节点“ fields / enable”的每个元素的元素名称的列表。 我不知道元素的名称是什么,我没有任何可触发的属性,该元素可以是任何xml可接受的名称。 在下面的示例中,iam
2回复

如何从curl输出中按类名获取div的值

我有一个PHP卷曲。 一切正常。 我得到了输出(作为网页代码)。 我只想获得一个值,但我不知道如何使用DOM / Xpath解析它。 输出: <!-- Inner Container Start --> <div class="container"> &