PHP SimpleXML - 获得价值
PHP SimpleXML - getting value
我正在尝试将 SimpleXML 与 PHP 结合使用,以从存储在数据库中的 XML 中获取值。我的 XML 的一部分看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_161" class="java.beans.XMLDecoder">
<object class="atavism.agis.objects.AgisMob" id="AgisMob0">
<void property="name">
<string>Rachels</string>
</void>
<void property="oid">
<object class="atavism.server.engine.OID" id="OID0">
<void property="data">
<long>41321</long>
</void>
我在同一个 "document" 中还有其他 XML,如下所示:
也就是说,我可能需要在 属性 属性等于 "name" 的地方获取它。我确实计划稍后从该文档中获取其他信息,只是需要弄清楚如何。
这是我目前的代码:
$blob_query = mysqli_query($dbh8, "SELECT * FROM objstore WHERE obj_id='$characterId' AND type='PLAYER' AND namespace_int='3' ORDER BY obj_id DESC LIMIT 1");
if($blob_query){
$blob_row = mysqli_fetch_assoc($blob_query);
$data = $blob_row['data'];
$xml=simplexml_load_string($data) or die("Error: Cannot create object");
echo $xml->void[0]->string;
}
它没有显示任何内容。它应该显示 "Rachels"。非常感谢任何帮助!
尝试像
一样在容器中插入所有元素
<?php
$xmld = '
<obj>
<void property="data">
<long>41321</long>
</void>
<void property="datad">
<long>413213</long>
</void></obj>';
$xml=simplexml_load_string($xmld) or die("Error: Cannot create object");
echo $xml->void[0]->long;
您缺少 <object>
标签以获取 <string>
标签内容。
假设您 XML 看起来像(作为有效的 XML):
$data = '<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_161" class="java.beans.XMLDecoder">
<object class="atavism.agis.objects.AgisMob" id="AgisMob0">
<void property="name">
<string>Rachels</string>
</void>
</object>
<void property="oid">
<object class="atavism.server.engine.OID" id="OID0">
<void property="data">
<long>41321</long>
</void>
</object>
</void>
</java>';
你必须使用:
$xml=simplexml_load_string($data) or die("Error: Cannot create object");
echo $xml->object->void[0]->string;
输出:
Rachels
另请注意,[0]
不是必需的(在本例中):
echo $xml->object->void->string;
我正在尝试将 SimpleXML 与 PHP 结合使用,以从存储在数据库中的 XML 中获取值。我的 XML 的一部分看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_161" class="java.beans.XMLDecoder">
<object class="atavism.agis.objects.AgisMob" id="AgisMob0">
<void property="name">
<string>Rachels</string>
</void>
<void property="oid">
<object class="atavism.server.engine.OID" id="OID0">
<void property="data">
<long>41321</long>
</void>
我在同一个 "document" 中还有其他 XML,如下所示:
也就是说,我可能需要在 属性 属性等于 "name" 的地方获取它。我确实计划稍后从该文档中获取其他信息,只是需要弄清楚如何。
这是我目前的代码:
$blob_query = mysqli_query($dbh8, "SELECT * FROM objstore WHERE obj_id='$characterId' AND type='PLAYER' AND namespace_int='3' ORDER BY obj_id DESC LIMIT 1");
if($blob_query){
$blob_row = mysqli_fetch_assoc($blob_query);
$data = $blob_row['data'];
$xml=simplexml_load_string($data) or die("Error: Cannot create object");
echo $xml->void[0]->string;
}
它没有显示任何内容。它应该显示 "Rachels"。非常感谢任何帮助!
尝试像
一样在容器中插入所有元素<?php
$xmld = '
<obj>
<void property="data">
<long>41321</long>
</void>
<void property="datad">
<long>413213</long>
</void></obj>';
$xml=simplexml_load_string($xmld) or die("Error: Cannot create object");
echo $xml->void[0]->long;
您缺少 <object>
标签以获取 <string>
标签内容。
假设您 XML 看起来像(作为有效的 XML):
$data = '<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_161" class="java.beans.XMLDecoder">
<object class="atavism.agis.objects.AgisMob" id="AgisMob0">
<void property="name">
<string>Rachels</string>
</void>
</object>
<void property="oid">
<object class="atavism.server.engine.OID" id="OID0">
<void property="data">
<long>41321</long>
</void>
</object>
</void>
</java>';
你必须使用:
$xml=simplexml_load_string($data) or die("Error: Cannot create object");
echo $xml->object->void[0]->string;
输出:
Rachels
另请注意,[0]
不是必需的(在本例中):
echo $xml->object->void->string;