我已经对tis进行了一些搜索,但似乎无法找到关于这个主题的任何简单方法或其他示例(我是几个月前的PHP,XML新手,所以请耐心等待:))。
问题:如何标记表单字段中的“名称”,以便我知道如何填充正确的子节点。 XML文件看起来像:
<band id="1">
<group>Guns N Roses</group>
<member>Duff</member>
</band>
<band id="2">
<group>Iron Maiden</group>
<member>Paul</member>
</band>
要通过Web表单更新此内容,我认为最好让INPUT字段中的name属性与子节点名称相同....但是我将拥有2个x组和2个成员。
我应该以某种方式将属性附加到名称的末尾,以便
<input name=group.1 value=$group.1>
<input name=group.1 value=$group.2>
(使用PHP DOM可以找到$ group.1和$ group.2)
然后我在php $ _POST数组中有一个唯一的名称/值对,用于通过DOM更新XML文件。
这一切似乎都非常骇人和笨重,我想知道是否有更优雅的方式来完成所有这些。再一次,对此非常新......可能已经有一些明显的方法可以做到这一点,我完全不知道了。
感谢任何帮助人员
先生。乙
答案 0 :(得分:0)
首先,您的“XML”不是有效的XML。它需要有一个包含所有内容的根元素。现在,你缺少这个根元素,因为在顶层你有多个元素(......)。
通过将整个字符串包装到另一个元素中来纠正这个问题:
$xml = "<root>$xml</root>";
然后将其加载到DOMDocument元素中,并使用DOMXPath或simpleXML对象遍历并遍历它(这可能更快地编码,不确定性能)。
编辑:如何命名表单元素以便于更新:
<input name="band[1][group]" value="$group1">
<input name="band[1][member]" value="$member1" />
<input name="band[2][group]" value="$group1">
<input name="band[2][member]" value="$member1" />
通过帖子发送表单后,您可以遍历所有输入foreach
$_POST['band']
数组:
if (count($_POST) > 0)
{
if (is_array($_POST['band'])
{
foreach ($_POST['band'] as $id => $band)
{
echo "Band $id has group ".$band['group']." and member ".$band['member']."<br />\n";
}
}
}