从 php 中的 xml 字符串中删除起始标记

Remove starting tags from an xml string in php

我有一个 URL 喜欢

http://lx2.loc.gov:210/lcdb?operation=searchRetrieve&recordSchema=marcxml&version=1.1&maximumRecords=10&query=bath.isbn%3D9781594634123%0A++++

which returns 一个 xml 字符串,现在我想删除这个 xml 字符串的起始标记并将 xml 字符串的其余部分存储在一个变量中.

EDIT 0:

<!-- begin snippet: js hide: false console: true babel: false -->

目前这是从 URL 返回的 xml 字符串。

EDIT:1

    <record xmlns="http://www.loc.gov/MARC21/slim">
<leader>01618cam a2200385 i 4500</leader>
<controlfield tag="001">18265203</controlfield>
<controlfield tag="005">20160810164742.0</controlfield>
<controlfield tag="008">140812s2015 nyu 000 1 eng</controlfield>
<datafield tag="906" ind1=" " ind2=" ">
<subfield code="a">7</subfield>
<subfield code="b">cbc</subfield>
<subfield code="c">orignew</subfield>
<subfield code="d">1</subfield>
<subfield code="e">ecip</subfield>
<subfield code="f">20</subfield>
<subfield code="g">y-gencatlg</subfield>
</datafield>
<datafield tag="925" ind1="0" ind2=" ">
<subfield code="a">Acquire</subfield>
<subfield code="b">1 shelf copy</subfield>
<subfield code="x">policy default</subfield>
</datafield>
</record>

这是我想要存储在 php 中的 xml 变量中的期望结果。

将其拆分成多个部分的简单方法是...

<?php
error_reporting ( E_ALL );
ini_set ( 'display_errors', 1 );

$xml = simplexml_load_file("http://lx2.loc.gov:210/lcdb?operation=searchRetrieve&recordSchema=marcxml&version=1.1&maximumRecords=10&query=bath.isbn%3D9781594634123%0A++++");
$xml->registerXPathNamespace('zs', 'http://www.loc.gov/zing/srw/');
$xml->registerXPathNamespace('def', 'http://www.loc.gov/MARC21/slim');

$nodes = $xml->xpath('//zs:record//def:record');
echo $nodes[0]->asXML();

XPath 获取每个记录元素,然后您可以将每个元素转换为 XML(我只对第一个元素这样做过,通常 foreach 会更好)。

registerXPathNamespace 被调用两次,一次用于注册 zs 命名空间,第二次用于内部记录元素中的默认命名空间。请注意,我使用 'def' 作为前缀以使其更容易。然后在 XPath 表达式中,我将这两个命名空间用于 select 内部记录元素。

编辑: 添加属性...

$nodes = $xml->xpath('//zs:record//def:record');
$nodes[0]->addAttribute('type', 'local');
echo $nodes[0]->asXML();

因为记录已经是根 - 这会创建...

<record xmlns="http://www.loc.gov/MARC21/slim" type="local">
  <leader>01618cam a2200385 i 4500</leader>