我正在使用XML文件在Google Maps画布上显示标记点,并且我正在尝试实现一个页面,我可以将数据输入到表单中,并将其保存为我的data.xml文件中的新标记。我试图按照PHP手册,但似乎无法使它工作,所以想知道你是否能够帮助我。表单提交,但似乎没有任何内容进入XML文件。我在PHP中做错了吗?我错过了什么实际上将数据发送到我的XML文件?这是我到目前为止的代码:
HTML:
<form name="input" action="map.php" method="post">
<p>Name</p>
<input type="text" name="name" placeholder="Name of road/junction"/>
<p>Latitude</p>
<input type="text" name="lat" placeholder="Latitude (should start with 54)"/>
<p>Longitude</p>
<input type="text" name="lng" placeholder="Longitude (should start with -2)"/>
<p>Image</p>
<input type="text" name="img" placeholder="include - images/"/>
<p>Custom Marker</p>
<input type="text" name="custommarker" placeholder="car.png"/>
<p>Description</p>
<input type="text" name="description" placeholder="Description of junction with tips"/>
<input type="submit" value="send"/>
</form>
PHP:
$sxe = new SimpleXMLElement($xmlstr);
$xmldoc->load('../data.xml');
$name = $_POST['name'];
$lat = $_POST['lat'];
$lng = $_POST['lng'];
$img = $_POST['img'];
$custommarker = $_POST['custommarker'];
$description = $_POST['description'];
$root = $xmldoc->firstChild;
$marker = $sxe->addChild('marker');
$root->addAttribute('name', $name);
$root->addAttribute('lat', $lat);
$root->addAttribute('lng', $lng);
$root->addAttribute('img', $img);
$root->addAttribute('custommarker', $custommarker);
$root->addAttribute('description', $description);
echo $sxe->asXML();
$xmldoc->save('../moredata.xml');
然后我的XML布局如下:
<markers>
<marker name="" lat="" lng="" img="" custommarker="" description "" />
</markers>
答案 0 :(得分:0)
我不了解PHP的第一行,但我这样做并且它有效。 您使用$ sxe添加子项而不是将其打印出来并将xmldoc保存到文件中。
<强> data.xml中强>
<?xml version="1.0" encoding="utf-8"?>
<markers/>
<强> map.php 强>
$xmldoc = simplexml_load_file('data.xml');
$name = $_POST['name'];
$lat = $_POST['lat'];
$lng = $_POST['lng'];
$img = $_POST['img'];
$custommarker = $_POST['custommarker'];
$description = $_POST['description'];
$marker = $xmldoc->addChild('marker');
$marker->addAttribute('name', $name);
$marker->addAttribute('lat', $lat);
$marker->addAttribute('lng', $lng);
$marker->addAttribute('img', $img);
$marker->addAttribute('custommarker', $custommarker);
$marker->addAttribute('description', $description);
echo $xmldoc->asXML();
$xmldoc->asXML('moredata.xml');
moredata.xml 包含
<?xml version="1.0" encoding="utf-8"?>
<markers>
<marker name="[[$name]]" lat="[[$lat]]" lng="[[$lng]]" img="[[$img]]" custommarker="[[$custommarker]]" description="[[$description]]"/>
</markers>
所以区别在于。 您创建一个名为$ marker的变量,而不是将属性添加到$ xmldoc-&gt; firstChild。
$marker = $xmldoc->addChild('marker');
$marker->addAttribute('name', $name);
$marker->addAttribute('lat', $lat);
$marker->addAttribute('lng', $lng);
$marker->addAttribute('img', $img);
$marker->addAttribute('custommarker', $custommarker);
$marker->addAttribute('description', $description);
您的代码:
$marker = $sxe->addChild('marker');
$root->addAttribute('name', $name);
$root->addAttribute('lat', $lat);
$root->addAttribute('lng', $lng);
$root->addAttribute('img', $img);
$root->addAttribute('custommarker', $custommarker);
$root->addAttribute('description', $description);