簡體   English   中英

從php中的XML文件獲取表的特定行

[英]get a specific row of a table from an XML file in php

因此,我有一個SQL數據庫來存儲游戲信息,例如清單的內容,並且我正在嘗試使用php在網頁上顯示此信息。

SQL東西都可以正常工作,我有一個XML文件,其中包含所有項目的所有名稱和信息。 當我嘗試讀取xml文件以打印項目名稱時,某些條目出現錯誤。

<?php

$ObjectXML = simpleXML_load_file("xml\objects_types.xml") or die("Error: Cannot Open XML file Object Types");

$servername = "localhost";
$username = -
$password = -

$connection = new mysqli($servername, $username, $password);

if($connection->connect_error) 
{
    die("Connection failed: " . $connection->connect_error);
}
echo("Connected Successfully<br>");

$sql = "SELECT * FROM lif_1.items WHERE ContainerID = 158;";
$result = $connection->query($sql);
echo('<table style="width:100%">');
echo("<tr>");
echo("  <th>ID</th>");
echo("  <th>ContainerID</th>");
echo("  <th>ObjectTypeID</th>");
echo("  <th>Quality</th>");
echo("  <th>Quantity</th>");
echo("  <th>Durability</th>");
echo("  <th>MaxDurability</th>");
echo("</tr>");
foreach($result as $row)
{
    echo("<tr>");
    $rowpos = 0;
    foreach($row as $value)
    {
        $rowpos++;
        echo("<td>");
        echo($value);
        if($rowpos==3)
        {
            echo(" Name:");
            echo($ObjectXML->row[$value-1]->Name);
               //print_r($ObjectXML->xpath('//objects_types[@ID="'+$value+'"]'));
        }
        echo("</td>");
    }
    echo("</tr>");
}
?>

網頁(和錯誤):http: //86.146.184.166/

XML文件:http: //86.146.184.166/xml/Objects_types.xml

我嘗試使用基於此處的解決方案的xpath,但這似乎返回一個空數組。

編輯:輸出:(有點難以閱讀)

連接成功
ID容器ID對象類型ID質量數量耐用性MaxDurability236158644名稱:Vertato Zonda10020002721581032名稱:
注意 :嘗試在第49行的D:\\ HTTP \\ XAMPP \\ htdocs \\ index.php中獲取非對象的屬性
100100273158361名稱:Iron Bar10060002801581030名稱:
注意 :嘗試在第49行的D:\\ HTTP \\ XAMPP \\ htdocs \\ index.php中獲取非對象的屬性
10028001089158338名稱:骨膠523001090158430名稱:木門屋561001091158390名稱:原始坩堝和棍棒562001092158342名稱:絲線56500

edit2-回答:D萬一有人覺得有用的話,我做了什么更改:

    echo(" Name:");
    //echo($ObjectXML->row[$value-1]->Name);
    $xpathobject = $ObjectXML->xpath("row/ID[.=\"$value\"]/parent::*");
    //print_r($xpathobject);
    echo($xpathobject[0]->Name);

XML中的row標記僅包含1029個條目。 當您撥打此行

echo($ObjectXML->row[$value-1]->Name);

$value包含10321030那么您當然要嘗試獲取不存在的對象的屬性。

要通過標記值查找simplexml節點條目,請使用xpath

$ObjectXML->xpath("row/ID[.=\"$value\"]/parent::*");

這是一個如何使用XPath通過值獲取ID節點的示例,以及如何獲取父節點的示例:

$value = 236;
$row = $xml->xpath( "//ID[.=\"$value\"]/parent::*" );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM