【发布时间】:2013-11-04 16:03:33
【问题描述】:
有没有办法附加一个 SimpleXML 元素的子元素?
例如
<comments>
<comment1>
<commentcontent>Test</commentcontent>
</comment1>
<comment2>
<commentcontent>Test2</commentcontent>
<comment3>
<commentcontent>Test3</commentcontent>
</comment3>
</comment2>
</comments>
我希望comment3 能够对其进行子集。我在想我可以使用一些正则表达式或通配符来忽略评论元素的数量,但还没有弄清楚如何。
我在尝试
$commentlevel = calculatelevel(($level[$commentkey] - 1)) . 'Comment' . $parent[$commentkey];
$newcomment = $commentsxml->xpath($commentlevel)->addChild('Comment' . $id);
function calculatelevel($level) {
$compile = '';
for($inc = 0; $inc < $level; $inc++) {
$compile = 'Comment*/';
}
return $compile;
}
还有许多变体,但似乎都失败了。谢谢。
【问题讨论】:
-
你到底为什么将元素称为
comment1和comment2等? XML 的全部意义在于您可以将它们都称为comment。 -
此数字是唯一标识符,因此可以选择/定位每个元素。完整的 XML 会更有用吗?这是一个我认为更容易调试的简化版本。
-
标签名称应该是元素的“类型”。如果你需要一个唯一的标识符,它应该是一个
id。 -
“标签名称”和“元素类型”是什么意思?我不认为这是回答问题的正确方向......
-
标签名称为
comment1vscomment2vscommentcontentvspvsbrvsblockquote等。如果将所有标签命名为comment,则可以有无限的嵌套,你的 XPath 会简单很多倍。