2

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
}
4

2 に答える 2

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;
于 2013-04-22T12:58:49.490 に答える