我正在try 返回从数据库接收的XML元素的值

数据库中的XML如下所示

<?xml version="1.0" encoding="UTF-8"?>
<record
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
    xmlns="http://www.loc.gov/MARC21/slim">

  <leader>00524nam a2200145Ia 4500</leader>
  <controlfield tag="001">25</controlfield>
  <controlfield tag="008">200930s9999  xx      000 0 und d</controlfield>
  <datafield tag="090" ind1=" " ind2=" ">
    <subfield code="a">25</subfield>
  </datafield>
  <datafield tag="100" ind1=" " ind2=" ">
    <subfield code="a">20220914              frey50        </subfield>
  </datafield>
  <datafield tag="101" ind1=" " ind2=" ">
    <subfield code="a">fre</subfield>
  </datafield>
  <datafield tag="200" ind1=" " ind2=" ">
    <subfield code="a">Etude sur les métiers -emplois de l'environnement pour la promotion de l'emploi environnemental comme appui a l'INDH</subfield>
    <subfield code="e">synthèse du rapport principal</subfield>
  </datafield>
  <datafield tag="210" ind1=" " ind2=" ">
    <subfield code="c">DES MINES ,DE L'EAU ET DE L'ENVIRONNEMENT</subfield>
  </datafield>
  <datafield tag="215" ind1=" " ind2=" ">
    <subfield code="a">33 p.</subfield>
  </datafield>
  <datafield tag="610" ind1=" " ind2=" ">
    <subfield code="a">ACTEURS;ENVIRENNEMENT;EMPLOI</subfield>
  </datafield>
  <datafield tag="676" ind1=" " ind2=" ">
    <subfield code="a">331.34</subfield>
  </datafield>
</record>

获取标记为"200"的数据字段及其代码为"a"的子字段

$xml_string = simplexml_load_string($notices->biblio->metadata[0]->metadata);

$nodes = $xml_string->xpath('//datafield[@tag="200"]/subfield[@code="a"]/text()');

我测试了XPath reeformter.com,它工作得很好,但是当我try 返回 node 时,我得到一个空array.我试图删除text()个,但不幸的是,它并不起作用,我try 了所有的可能性,但没有一个奏效.

推荐答案

您最好直接面对XML中的名称空间:

$xml_string->registerXPathNamespace("xxx", "http://www.loc.gov/MARC21/slim");
$node = $xml_string->xpath('//xxx:datafield[@tag="200"]/xxx:subfield[@code="a"]/text()')[0];
echo $node;

输出:

Etude sur les métiers -emplois de l'environnement pour la promotion de l'emploi environnemental comme appui a l'INDH

Php相关问答推荐

Laravel:替换嵌套路由中的中间件参数

根据自定义输入字段更新WooCommerce产品价格

WooCommerce管理订单列表自定义列不显示值

WooCommerce数量减号和加号图标未显示

在Laravel中修改JSON输出

PHP根据特定索引值从中删除子数组

如何使用MS Graph PHP SDK V2下载文件

在WordPress中从CPT中删除插件

PHP:使用FORT从数据库获取USERS表到AUTH表

在WooCommerce中只允许高价产品的BACS付款

Laravel Carbon DiffForHumans选项(年,月,天)

Laravel路由到控制器传输变量解决方案需要

使用HPOS过滤WooCommerce中的订单列表

在 PHP MySQL 中自动生成账单编号

Woocommerce API - 图像问题

为什么foreach循环会输出每个结果?

优化后的标题:如何在WooCommerce我的帐户编辑表单中添加账单字段

php var_dump(1) 返回字符串(4)

使用 PHP 正则表达式从仅包含具有现有顺序的顶级标签的 XML 文档中搜索和创建数组

如何从 PHP 中的字符串位置排除图像扩展名