我正在尝试根据ID从XML文件中获取一组属性。我环顾四周,找不到有效的解决方案。
这是我的XML:
<data>
<vico>2</vico>
<vis>
<vi>
<id>1</id>
<name>Vill1</name>
<att>2</att>
<hp>100</hp>
<xp>10</xp>
</vi>
<vi>
<id>2</id>
<name>Vill2</name>
<att>3</att>
<hp>120</hp>
<xp>12</xp>
</vi>
</vis>
</data>
我要做的是创建一个获取vico值并执行mt_rand(0,vico)的脚本(已经创建了这部分代码),并根据出现的数量,拉出该节点。
例如,如果数字是2,我希望它拉出xml文件中id为2的所有属性。我在想我必须使ID成为其他属性的父项,但是我我不确定。对于我的生活,我无法弄清楚这一点。在我再投资之前,我也想确保这是可能的。
我确实意识到这可以通过mySQL很容易地完成,但是我选择不这样做以便于移植,因为我正在使用拇指驱动器。任何帮助将不胜感激。
基于ID的拉动工作代码:
$xml = simplexml_load_file("vi.xml")
or die("Error: Cannot create object");
$vc = $xml->vico;
$select = mt_rand()&$vc;
if ($select == 0) {
$select = $select + 1;
}
$result = $xml->xpath("/data/vis/vi/id[.='".$select."']/parent::*");
if ($result) {
$node = $result[0];
$name = $node->name;
$att = $node->att;
$hp = $node->hp;
$xp = $node->xp ;
} else {
// nothing found for this id
}
答案 0 :(得分:0)
如果您使用的是SimpleXML:
$name = $xml->vis->vi[$vico]->name;
$att = $xml->vis->vi[$vico]->att;
$hp = $xml->vis->vi[$vico]->hp;
$xp = $xml->vis->vi[$vico]->xp;
答案 1 :(得分:0)
使用xpath检索节点,其中is =您的值(它基于值)。
$result = $xml->xpath("/data/vis/vi/id[.='".$select."']/parent::*");
if ($result) {
$node = $result[0];
$name = $node->name;
$att = $node->att;
$hp = $node->hp;
$xp = $node->xp ;
} else {
// nothing found for this id
}