使用XPath无法从XML文档提取数据

eComEvo

我正在尝试从本文档中的xpath“ // otherManagers2Info / otherManager2 / otherManager”中提取所有“名称”和“ form13FFileNumber”值:https ://www.sec.gov/Archives/edgar/data/1067983/ 000095012314002615 / primary_doc.xml

这是我的代码。知道我在这里做错了吗?

$xml = file_get_contents($url);

$dom = new DOMDocument();

$dom->loadXML($xml);

$x = new DOMXpath($dom);

$other_managers = array();

$nodes = $x->query('//otherManagers2Info/otherManager2/otherManager');

if (!empty($nodes)) {
    $i = 0;

    foreach ($nodes as $n) {
        $i++;

        $other_managers[$i]['form13FFileNumber'] = $x->evaluate('form13FFileNumber', $n)->item(0)->nodeValue;
        $other_managers[$i]['name'] = $x->evaluate('name', $n)->item(0)->nodeValue;
    }
}
W

就像您在评论中发布的一样,您可以仅使用Xpath自己的前缀注册名称空间。命名空间前缀只是别名。Xpath中没有默认的名称空间,因此您始终必须注册并使用前缀。

但是,表达式始终返回可遍历的节点列表,您可以使用foreach对其进行迭代。query()evaluate()以上下文节点作为第二个参数,则表达式是相对于上下文的。Lastevaluate()可以直接返回标量值。如果将Xpath中的节点列表转换为标量类型(如字符串)或使用类似的函数,则会发生这种情况count()

$dom = new DOMDocument();
$dom->loadXml($xml);

$xpath = new DOMXpath($dom);
$xpath->registerNamespace('e13', 'http://www.sec.gov/edgar/thirteenffiler');
$xpath->registerNamespace('ecom', 'http://www.sec.gov/edgar/common');

$result = [];
$nodes = $xpath->evaluate('//e13:otherManagers2Info/e13:otherManager2/e13:otherManager');
foreach ($nodes as $node) {
  $result[] = [
    'form13FFileNumber' => $xpath->evaluate('string(e13:form13FFileNumber)', $node),
    'name' => $xpath->evaluate('string(e13:name)', $node),
  ];
}

var_dump($result);

演示:https : //eval.in/125200

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法使用Scrapy提取数据

来自分类Dev

如何使用带有Selenium Webdriver的XPath提取XML数据

来自分类Dev

使用libXML / XPath提取和存储XML数据

来自分类Dev

使用SQL提取XML数据

来自分类Dev

无法按预期在文档上使用xpath

来自分类Dev

如何从XML文档中提取数据

来自分类Dev

从使用名称空间的XML文档中提取数据

来自分类Dev

PostgreSQL:使用xpath从XML列提取数据

来自分类Dev

Python脚本无法从XML提取数据

来自分类Dev

无法使用Powershell使用Xpath循环XML

来自分类Dev

从XML文档获取xPath

来自分类Dev

使用Python ElementTree从xml文档中提取文本

来自分类Dev

使用xpath提取嵌套的微数据

来自分类Dev

如何从此xml文档中提取数据

来自分类Dev

无法使用Scrapy提取数据

来自分类Dev

在没有xpath的情况下从xml提取数据

来自分类Dev

无法使用SQL / OPENXML查询XML文档

来自分类Dev

使用javascript提取XML数据

来自分类Dev

使用PHP从XML文档的属性中提取信息

来自分类Dev

使用libXML / XPath提取和存储XML数据

来自分类Dev

无法使用JAVA从网站提取xml数据

来自分类Dev

如何使用xpath或查询从xml提取数据

来自分类Dev

Scrapy,Python:无法使用在Firebug中看到的xpath提取数据

来自分类Dev

使用XPath和PHP过滤XML文档

来自分类Dev

无法在命令行中使用 XMLStarlet 从 XML 文件中提取数据(命名空间限制)

来自分类Dev

使用 ImportXML 和 XPath 从 XML 中提取数据

来自分类Dev

使用 xpath 和 xsl 遍历 xml 文档

来自分类Dev

使用 xpath 从 xml 元素中提取值

来自分类Dev

从python中的XML文档中提取特定数据