我无法理解大多数与此相关的网站上提供的示例。我希望能够获得用户输入,例如“月:1”,“ID:1”,“日期:01-01-2017”,然后显示确切的一个。
我无法弄清楚如何通过XML这是我目前的想法
echo $xml->fullyear->month[$monthGET]->finances[$passID]->projection
然而,这不起作用。如何使用用户输入将其输出,输入工作正常。
这是我当前读取数据的PHP文件:
<?php
$xml=simplexml_load_file("XML1.xml") or die("Error: Cannot create object");
echo $_GET["SearchChoice"];
echo $_GET["IDsend"];
echo $_GET["DateSend"];
switch ($_GET["SearchChoice"])
{
case "ID Search":
$passID = intval($_GET["IDsend"]);
if ($passID !== 0)
{
$passID = $passID - 1;
}
$attr = $xml->finances[$passID]->attributes();
echo "Date: ";
echo $attr['date'];
echo "<br> Projection: ";
echo $xml->finances[$passID]->projection . ",<br>Recommended Staff: ";
echo $xml->finances[$passID]->recommendedStaff . ",<br>Staff Wages: ";
echo $xml->finances[$passID]->staffWages . ",<br>Actual: ";
echo $xml->finances[$passID]->actual . "<br>";
break;
case "Date Search":
$passDate = strval($_GET["DateSend"]);
$nodes = $xml->xpath("/year2017/finances[@date='". $passDate . "']");
if ($nodes)
$nodes = array_shift($nodes);
break;
default:
$nodes = NULL;
}
if ($nodes)
{
echo "Date: ";
$attr = $nodes->attributes();
echo $attr['date'];
echo "<br> Projection: ";
echo $nodes->projection . ",<br>Recommended Staff: ";
echo $nodes->recommendedStaff . ",<br>Staff Wages: ";
echo $nodes->staffWages . ",<br>Actual: ";
echo $nodes->actual . "<br>";
}
?>
以下是我的XML文件的片段。
<fullyear>
<month value="1">
<finances id="1" date="01-01-2017">
<projection>414</projection>
<recommendedStaff>20</recommendedStaff>
<staffWages>100</staffWages>
<actual>250</actual>
</finances>
<finances id="2" date="02-01-2017">
<projection>124</projection>
<recommendedStaff>8</recommendedStaff>
<staffWages>150</staffWages>
<actual>250</actual>
</finances>
<finances id="3" date="03-01-2017">
<projection>687</projection>
<recommendedStaff>20</recommendedStaff>
<staffWages>150</staffWages>
<actual>250</actual>
</finances>
<finances id="4" date="04-01-2017">
<projection>587</projection>
<recommendedStaff>15</recommendedStaff>
<staffWages>150</staffWages>
<actual>250</actual>
</finances>
<finances id="5" date="05-01-2017">
<projection>124</projection>
<recommendedStaff>5</recommendedStaff>
<staffWages>150</staffWages>
<actual>250</actual>
</finances>
<finances id="6" date="06-01-2017">
<projection>874</projection>
<recommendedStaff>22</recommendedStaff>
<staffWages>150</staffWages>
<actual>250</actual>
</finances>
<finances id="7" date="07-01-2017">
<projection>574</projection>
<recommendedStaff>18</recommendedStaff>
<staffWages>150</staffWages>
<actual>250</actual>
</finances>
</month>
<month value="2">
<finances id="32" date="01-02-2017">
<projection>101</projection>
<recommendedStaff>10</recommendedStaff>
<staffWages>101</staffWages>
<actual>101</actual>
</finances>
<finances id="33" date="02-02-2017">
<projection>101</projection>
<recommendedStaff>10</recommendedStaff>
<staffWages>101</staffWages>
<actual>101</actual>
</finances>
<finances id="34" date="03-02-2017">
<projection>101</projection>
<recommendedStaff>10</recommendedStaff>
<staffWages>101</staffWages>
<actual>101</actual>
</finances>
<finances id="35" date="04-02-2017">
<projection>101</projection>
<recommendedStaff>10</recommendedStaff>
<staffWages>101</staffWages>
<actual>101</actual>
</finances>
<finances id="36" date="05-02-2017">
<projection>101</projection>
<recommendedStaff>10</recommendedStaff>
<staffWages>101</staffWages>
<actual>101</actual>
</finances>
</month>
</fullyear>
答案 0 :(得分:1)
你遗失了一些东西。比如case "ID Search":
中的月份,而xpath
中没有提供正确的路径。
尝试以下:
<?php
$xml=simplexml_load_file("XML1.xml") or die("Error: Cannot create object");
$_GET["SearchChoice"]="Date Search";
$_GET["IDsend"]=1;// these are just sample values
$_GET["DateSend"]="01-01-2017";
$month=1;
switch ($_GET["SearchChoice"])
{
case "ID Search":
$passID = intval($_GET["IDsend"]);
if ($passID !== 0)
{
$passID = $passID - 1;
}
$attr = $xml->month[$month]->finances[$passID]->attributes();
echo "Date: ";
echo $attr['date'];
echo "<br> Projection: ";
echo $xml->month[$month]->finances[$passID]->projection . ",<br>Recommended Staff: ";
echo $xml->month[$month]->finances[$passID]->recommendedStaff . ",<br>Staff Wages: ";
echo $xml->month[$month]->finances[$passID]->staffWages . ",<br>Actual: ";
echo $xml->month[$month]->finances[$passID]->actual . "<br>";
break;
case "Date Search":
$passDate = strval($_GET["DateSend"]);
$nodes = $xml->xpath("/fullyear/month/finances[@date='". $passDate . "']");
if ($nodes)
$nodes = array_shift($nodes);
break;
default:
$nodes = NULL;
}
if ($nodes)
{
echo "Date: ";
$attr = $nodes->attributes();
echo $attr['date'];
echo "<br> Projection: ";
echo $nodes->projection . ",<br>Recommended Staff: ";
echo $nodes->recommendedStaff . ",<br>Staff Wages: ";
echo $nodes->staffWages . ",<br>Actual: ";
echo $nodes->actual . "<br>";
}
输出XPATH日期搜索:
Date: 01-01-2017
Projection: 414,
Recommended Staff: 20,
Staff Wages: 100,
Actual: 250
输出XPATH ID搜索:
Date: 01-02-2017
Projection: 101,
Recommended Staff: 10,
Staff Wages: 101,
Actual: 101