我正在尝试使用DOM / PHP将条目添加到XML文件中,但我终生无法让它们出现在XML文件中。
XML模式如下:
<alist>
<a>
<1>text a</1>
<2>text a</2>
</a>
<a>
<1>text b</1>
<2>text b</2>
</a>
</alist>
而PHP是:
$xmlFile = "../../data/file.xml";
$dom = DOMDocument::load($xmlFile);
$v1 = "text c";
$v2 = "text c";
//create anchor
$alist = $dom->getElementsByTagName("alist");
//create elements and contents for <1> and <2>
$a1= $dom->createElement("1");
$a1->appendChild($dom->createTextNode($v1));
$a2= $dom->createElement("2");
$a2->appendChild($dom->createTextNode($v2));
//Create element <a>, add elements <1> and <2> to it.
$a= $dom->createElement("a");
$a->appendChild($v1);
$a->appendChild($v2);
//Add element <a> to <alist>
$alist->appendChild($a);
//Append entry?
$dom->save($xmlFile);
getElementsByTagName()
返回具有该标签名称的元素节点的列表。您不能将节点追加到列表中。您只能将它们附加到列表中的元素节点。
您需要检查列表中是否包含节点,然后阅读第一个节点。
不允许使用数字元素名称,例如1
或2
。数字不能是xml限定名称的第一个字符。即使对它们进行编号e1, e2, ...
也不是一个好主意,但这样会使定义变得困难。如果需要该数字,则将其放入属性值。
$xml = <<<XML
<alist>
<a>
<n1>text a</n1>
<n2>text a</n2>
</a>
<a>
<n1>text b</n1>
<n2>text b</n2>
</a>
</alist>
XML;
$dom = new DOMDocument();
$dom->preserveWhiteSpace = FALSE;
$dom->formatOutput = TRUE;
$dom->loadXml($xml);
$v1 = "text c";
$v2 = "text c";
// fetch the list
$list = $dom->getElementsByTagName("alist");
if ($list->length > 0) {
$listNode = $list->item(0);
//Create element <a>, add it to the list node.
$a = $listNode->appendChild($dom->createElement("a"));
$child = $a->appendChild($dom->createElement("n1"));
$child->appendChild($dom->createTextNode($v1));
$child = $a->appendChild($dom->createElement("n2"));
$child->appendChild($dom->createTextNode($v2));
}
echo $dom->saveXml();
输出:https : //eval.in/147562
<?xml version="1.0"?>
<alist>
<a>
<n1>text a</n1>
<n2>text a</n2>
</a>
<a>
<n1>text b</n1>
<n2>text b</n2>
</a>
<a>
<n1>text c</n1>
<n2>text c</n2>
</a>
</alist>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句