我正在使用 REST API 产生 xml 结果。 Thre 是一个名为 zone 的节点。如何使用 php 更改节点的值?
I am using a REST API which produces xml results. Thre is a node called zone. How can I change the value of the node using php?
我正在使用生成 xml 结果文件的 API。这是 URI 示例
$xml = simplexml_load_string(file_get_contents('https://api.url.com/v2/result?key=mykey&zone=all&q='.$first_name.'%20'.$last_name));
在 URI 中,&zone=all 生成所有区域的所有结果。我可以将其更改为 &zone=person 但我需要所有结果。在下一行中,我需要一种能够更改 "zone" 的方法,以便可以根据我想要的区域结果设置它的值。您可以在下面的示例中看到我已尝试将其更改为 book。它没有用,我得到了一个未定义的常量错误。如果有人能告诉我如何解决这个问题,我将非常感激。我没有用 XML lately.Thanks.
做很多工作
$title = $xml->zone->records->work->zone=book;
foreach ($title as $work) {
foreach ($work->title as $titles) {
echo "ID: ".$id."<br> <b>Title: </b>".$titles."<br>";
}
}
这里是返回的 xml 文件的副本,但不包含密钥。
<response>
<query>hello</query>
<zone name="url">
<records s="*" n="0" total="0"/>
</zone>
<zone name="people">
<records s="*" n="20" total="58" next="/result?q=hello&zone=people&s=AoIIRib9grewqTU2MGRkMS02YzgzLTQxYQ%3D" nextStart="AoIIRib9GD8NaWRlbnRpddfsdfk0OWQ=">
<people id="1140172" url="/people/1140172">
</people>
<people id="1482231" url="/people/1482231">
</people>
<people id="832153" url="/people/832153">
</people>
</records>
</zone>
<zone name="collection">
<records s="*" n="20" total="496" next="/result?q=hello&zone=collection&s=AoIIQsdfszdTIyNzc3MDUzNg%3D%3D" nextStart="AoIIQ3sHAysdfdszc3MDUzNg==">
<work id="208227193" url="/work/208227193">
</work>
<work id="225096966" url="/work/225096966">
</work>
<work id="225096968" url="/work/225096968">
</work>
</records>
</zone>
<zone name="gazette">
<records s="*" n="20" total="91239" next="/result?q=hello&zone=gazette&s=AoIIRdAyNjk3NzQ%3D" nextStart="AoIIgdfgek3NzQ=">
<article id="249121748" url="/newspaper/249121748">
</article>
<article id="225072553" url="/newspaper/225072553">
</article>
<article id="249121741" url="/newspaper/249121741">
</article>
</records>
</zone>
<zone name="book">
<records s="*" n="20" total="9245" next="/result?q=hello&zone=book&s=AogxMjk1Mg%3D%3D" nextStart="AoIIQ6HewytzdTIjk1Mg==">
<work id="19554432" url="/work/19554432">
</work>
<work id="31597077" url="/work/31597077">
</work>
<work id="11135964" url="/work/11135964">
</work>
</records>
</zone>
</response>
我真的只是希望能够访问每个区域的信息。在返回的 xml 示例中,我减少了结果,但每个区域内部都有更多信息。结果太大,无法 post 放入此处。
XML 元素被视为数组,因此我的解决方案很简单。要使用访问每个区域,我只需要计算出数组中的位置,然后在区域前面使用它,请参见下面的示例。
$title = $xml->zone[5]->records->work;
来源:https://www.php.net/manual/en/simplexmlelement.children.php
我正在使用生成 xml 结果文件的 API。这是 URI 示例
$xml = simplexml_load_string(file_get_contents('https://api.url.com/v2/result?key=mykey&zone=all&q='.$first_name.'%20'.$last_name));
在 URI 中,&zone=all 生成所有区域的所有结果。我可以将其更改为 &zone=person 但我需要所有结果。在下一行中,我需要一种能够更改 "zone" 的方法,以便可以根据我想要的区域结果设置它的值。您可以在下面的示例中看到我已尝试将其更改为 book。它没有用,我得到了一个未定义的常量错误。如果有人能告诉我如何解决这个问题,我将非常感激。我没有用 XML lately.Thanks.
做很多工作$title = $xml->zone->records->work->zone=book;
foreach ($title as $work) {
foreach ($work->title as $titles) {
echo "ID: ".$id."<br> <b>Title: </b>".$titles."<br>";
}
}
这里是返回的 xml 文件的副本,但不包含密钥。
<response>
<query>hello</query>
<zone name="url">
<records s="*" n="0" total="0"/>
</zone>
<zone name="people">
<records s="*" n="20" total="58" next="/result?q=hello&zone=people&s=AoIIRib9grewqTU2MGRkMS02YzgzLTQxYQ%3D" nextStart="AoIIRib9GD8NaWRlbnRpddfsdfk0OWQ=">
<people id="1140172" url="/people/1140172">
</people>
<people id="1482231" url="/people/1482231">
</people>
<people id="832153" url="/people/832153">
</people>
</records>
</zone>
<zone name="collection">
<records s="*" n="20" total="496" next="/result?q=hello&zone=collection&s=AoIIQsdfszdTIyNzc3MDUzNg%3D%3D" nextStart="AoIIQ3sHAysdfdszc3MDUzNg==">
<work id="208227193" url="/work/208227193">
</work>
<work id="225096966" url="/work/225096966">
</work>
<work id="225096968" url="/work/225096968">
</work>
</records>
</zone>
<zone name="gazette">
<records s="*" n="20" total="91239" next="/result?q=hello&zone=gazette&s=AoIIRdAyNjk3NzQ%3D" nextStart="AoIIgdfgek3NzQ=">
<article id="249121748" url="/newspaper/249121748">
</article>
<article id="225072553" url="/newspaper/225072553">
</article>
<article id="249121741" url="/newspaper/249121741">
</article>
</records>
</zone>
<zone name="book">
<records s="*" n="20" total="9245" next="/result?q=hello&zone=book&s=AogxMjk1Mg%3D%3D" nextStart="AoIIQ6HewytzdTIjk1Mg==">
<work id="19554432" url="/work/19554432">
</work>
<work id="31597077" url="/work/31597077">
</work>
<work id="11135964" url="/work/11135964">
</work>
</records>
</zone>
</response>
我真的只是希望能够访问每个区域的信息。在返回的 xml 示例中,我减少了结果,但每个区域内部都有更多信息。结果太大,无法 post 放入此处。
XML 元素被视为数组,因此我的解决方案很简单。要使用访问每个区域,我只需要计算出数组中的位置,然后在区域前面使用它,请参见下面的示例。
$title = $xml->zone[5]->records->work;
来源:https://www.php.net/manual/en/simplexmlelement.children.php