由於StackOverflow社區的幫助,我已經取得了一些成功,可以修改複雜的XML源以供jsTree使用。不過現在我已經是可用的數據,它是唯一的,所以如果我手動編輯XML做到以下幾點:PHP + XML - 如何使用SimpleXML或DOMDocument重命名和刪除XML元素?
- 重命名所有
<user>
標籤<item>
- 第一
<user>
標籤之前刪除一些元素 - 插入
'encoding=UTF-8'
到XML開罐器 - 和最後修改
<response>
(開口XML標籤),以<root>
XML文件示例:SampleXML
我已閱讀並閱讀了這裏和谷歌上的很多頁面,但無法找到實現上述項目的方法。
點(2)我已經發現,通過經SimpleXML加載它,並使用UNSET
我可以刪除我不需要的部分,但我仍然有剩下的煩惱。
我想我可以用SimpleXML(我比較熟悉的)修改源代碼,然後通過之前提供的幫助繼續修改代碼。
<?php
$s = file_get_contents('http://www.fluffyduck.com.au/sampleXML.xml');
$doc1 = simplexml_load_string($s);
unset($doc1->row);
unset($doc1->display);
#$moo = $doc1->user;
echo '<textarea>';
echo $doc1->asXML();
echo '</textarea>';
$doc = new DOMDocument();
$doc->loadXML($doc1);
$users = $doc->getElementsByTagName("user");
foreach ($users as $user)
{
if ($user->hasAttributes())
{
// create content node
$content = $user->appendChild($doc->createElement("content"));
// transform attributes into content elements
for ($i = 0; $i < $user->attributes->length; $i++)
{
$attr = $user->attributes->item($i);
if (strtolower($attr->name) != "id")
{
if ($user->removeAttribute($attr->name))
{
if($attr->name == "username") {
$content->appendChild($doc->createElement('name', $attr->value));
} else {
$content->appendChild($doc->createElement($attr->name, $attr->value));
}
$i--;
}
}
}
}
}
$doc->saveXML();
header("Content-Type: text/xml");
echo $doc->saveXML();
?>
您可能正在尋找Xpath :http://www.ibm.com/developerworks/xml/library/x-xpathphp/ – RockyFord
這可能有助於隔離標籤,但不能看到它幫助其他項目 –
user1648968