【发布时间】:2019-11-04 13:14:30
【问题描述】:
我正在从 XML 页面中提取数据,并尝试使用一些 PHP 代码将其写回。我通过使用 item(0) 和 getAttributeNode 拉动单个节点,然后保存回 nodeValue 而不是使用 setAttribute 成功地做到了这一点。然而,我的目标是让代码与 foreach 语句一起工作,这样在添加和删除路径时我不必返回并编辑它。
如果我尝试使用 setAttribute 更改它,它在任何一种情况下都不起作用(单独拉动它们或使用 foreach 语句),我不知道如何制作 getAttributeNode 和 @ 987654328@ 使用 foreach 语句。我想我可能需要一个数组,但到目前为止我所尝试的都没有奏效。我可以无错误地加载页面,但是当我单击提交按钮时没有任何反应。
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<?php
$xml = new DOMDocument('1.0', 'utf-8');
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$xml->load('example.xml');
$xpath = new DOMXpath($xml);
$childForm = '';
foreach ( $xpath->query("//trails/trail") as $trail ) {
$childForm .= "<form action=''>
<span class=\"title\">".$trail->getAttribute("name")."</span> <span class=\"title\">Status</span>
<select name=\"asstatusform\" >
<option selected value=".$trail->getAttribute("status").">".$trail->getAttribute("status")."</option>
<option value=\"OPEN\">OPEN</option>
<option value=\"CLOSED\">CLOSED</option>
<option value=\"RACING CLOSURE\">RACING CLOSURE</option>
</select></span>
<br>
</form>";
}
?>
<form action="" method="POST">
<?php echo $childForm; ?>
<input name="submit" type="submit" value="Save" />
</form>
<?php
if (isset($_POST['submit']))
{
$trail->setAttribute('status', $_POST['asstatusform']);
htmlentities($xml->save('example.xml'));
}
?>
【问题讨论】:
-
如果这仍然是个问题,您能否提供一个
<trail>元素的样例? -
<trail name="Trail1" status="CLOSED" difficulty="novice"/>
标签: php xml dom domdocument