所以除了一件事,我几乎有我想要的输出。我似乎无法弄清楚如何使用PHP在HTML表格中的新行上打印我的XML文件的特定部分来回应它。
对于PHP来说,我并不是最伟大的,但我发现涉及到它很有趣。至于我到目前为止的代码,我将发布我的PHP部分。
<?php
$file="badscifimovies.xml";
$xml = simplexml_load_file($file) or die ("no load");
echo <<<EOF
<table>
<tr>
<th>Title</th>
<th>Year</th>
<th>Producers/Director</th>
<th>Stars</th>
<th>Budget</th>
<th>MST3000</th>
</tr>
EOF;
foreach($xml->movie as $movie){
echo "<tr>";
echo "<td>{$movie->title}</td>";
echo "<td>{$movie->year}</td>";
echo "<td>{$movie->director->producer}</td>";
foreach($movie->stars->star as $stars){
echo "<td>{$stars[0]}</td>";
}
echo "<td>{$movie->budget}</td>";
echo "<td>{$movie->mst}</td>";
echo "<br />";
echo "</tr>";
}
echo '</table>';
?>
我正在寻找的输出是“星星”部分。 我得到的XML部分是:
<stars>
<star>Name One</star>
<star>Name two</star>
<star>Name three</star>
</star>
我似乎无法在单独的行上打印每一个。我的所有其他代码都打印出XML文档的其余部分(可能是因为每部电影有1个元素)。对于星星部分,它会并排打印所有三颗星,但会将我的每个电影部分打印出一条新线,就像它应该的那样。
任何帮助将不胜感激。如果您需要我的更多信息,我会发布更多信息。
答案 0 :(得分:1)
foreach($xml->movie as $movie){
echo "<tr>";
echo "<td>{$movie->title}</td>";
echo "<td>{$movie->year}</td>";
echo "<td>{$movie->director->producer}</td>";
echo "<td>";
foreach($movie->stars->star as $stars){
echo $stars[0] . '<br/>';
}
echo "</td>";
echo "<td>{$movie->budget}</td>";
echo "<td>{$movie->mst}</td>";
echo "<br />";
echo "</tr>";
}
我认为这应该有效。您为每个星标创建了一个新的<td>
元素,但您只有一个<th>
代码对应。
答案 1 :(得分:1)
XML文件(employee.xml)
<root>
<person>
<sno>1</sno>
<name>person1</name>
<phno>098687667</phno>
</person>
<person>
<sno>2</sno>
<name>person2</name>
<phno>897876756</phno>
</person>
<person>
<sno>3</sno>
<name>person3</name>
<phno>986875675</phno>
</person>
PHP代码
<body>
<?php
$xml = simplexml_load_file("employee.xml")
or die("Error: Cannot create object");
$element_name = array(); //get all xml element name
foreach ($xml->children()->children() as $value) {
$element_name[] = $value->getName();
}
?>
<table border = "1">
<thead>
<tr>
<?php
foreach ($element_name as $value) { //display table head
echo "<th>{$value}</th>";
}
?>
</tr>
</thead>
<tbody>
<?php
foreach ($xml->children() as $value) { //display table data
echo "<tr>";
for ($i = 0; $i < count($element_name); $i++) {
echo "<td>{$value->children()->$element_name[$i]}</td>";
}
echo "</tr>";
}
?>
</tbody>
</table>
</body>
答案 2 :(得分:0)