【问题标题】:parsing xml id from website xml parser php从网站xml解析器php解析xml id
【发布时间】:2012-02-12 00:58:34
【问题描述】:

我想解析下面的id:date

我将如何选择它?我知道如何选择课程,但我没有运气。

这是我对类所做的:

$xml->xpath('//*[@class="date"]'); 

我尝试将@class 切换为@id,但没有成功。我做错了什么?

提前谢谢你

@$doc=new DOMDocument();
@$doc->loadHTML($html5);

$xml=simplexml_import_dom($doc);
$images=$xml->xpath('//*[@id="date"]'); 
$arr= array();
foreach ($images as $img) {
  $arr[]= $img;
}

echo $arr[0];

【问题讨论】:

  • 发帖前有没有考虑过 Google 或 SO 搜索功能?这个 SO 答案应该可以帮助您:Xpath problem, getting the id(attribute) of a element, if you know the title of the element
  • 没有按照你发布的例子,我问是因为我真的很挣扎,找不到答案,但你似乎很喜欢每天抽出 10 秒来抨击我......谢谢跨度>
  • 很好,因为你让我感到内疚 :) 你是否试图用等于“日期”的“id”属性解析出 DOM 中的单个元素?

标签: php html xml-parsing


【解决方案1】:

现在你让我感觉很糟糕......

下面的 xpath 查询将检索具有属性 id = date 的所有元素。由于您只关心第一个(不应超过一个,因为 ID 属性应该是唯一的......但您永远不知道),您需要在 xpath 返回的 DOMNodeList 中引用 item(0)查询。

$xml = '<root><p>element we don\'t care about</p><p id="date">date element text</p></root>';
$doc = new DomDocument;
$doc->loadXML($xml);

$xpath = new DOMXPath($doc);
if ($el = $xpath->query("//*[@id='date']")->item(0)) {
  echo $el->nodeValue; // outputs: date element text
} else {
  echo 'no elements exist in the xml with an "id" attribute';
}

希望对您有所帮助。

【讨论】:

  • 我复制了您所提供的内容,但确实给了我一个错误,说明我试图在非对象上执行此操作。我已经编辑了我的代码以提供我已经拥有的东西,也许这会有所帮助。感谢您的尝试!
  • @Teddy13 从这段代码中得到的错误表明没有id为date的元素。您可能还想将您的 xml 添加到问题中。
  • @Yoshi 是正确的。 您的问题是在您解析的任何代码中都没有具有 id 属性的元素。 我已经更新了代码以允许这种行为。我的示例使用包含 id 属性的元素处理已知 XML 源(这就是我包含它的原因),因此它永远不会执行该条件。
猜你喜欢
  • 2013-07-13
  • 2013-03-28
  • 2012-07-31
  • 2011-11-17
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
  • 2010-10-05
相关资源
最近更新 更多