我正在尝试检查一块xml是否有根标记。 例如
<xml>
<test>test</test>
</xml>
时应视为有效
<test>test</test>
应视为无效。
应该按原样处理第一个示例,而第二个示例应该包含在<helper></helper>
个标记内。
在PHP中检查这个问题的最佳方法是什么,我一直在考虑使用正则表达式,但我真的不知道正则表达式应该是什么,如果我们这样做的话还要考虑标签可以有属性。
编辑:我使用simplexml_load_string将字符串与XML流媒体一起加载,问题是XML流媒体当时会刮掉xml文件1标记。
当我有一个像:
这样的文件时<xml>
<name attr="test">Archcry</name>
<test>
<name>Archcry</name>
<moreinfo>more info goes here</moreInfo>
</test>
</xml>
我得到的样子如下:
<name attr="test">Archcry</name>
和
<test>
<name>Archcry</name>
<moreinfo>more info goes here</moreInfo>
</test>
第二段代码可以通过simplexml_load_string运行就好了。 但是我想在第一部分添加帮助标签,否则我不会得到一个好的xml对象来使用
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
要确定XML字符串是否具有根节点,您可以使用simplexml类。
出于您的目的,您可以使用children
方法:
$string ="<test>test</test>";
// $string ="<xml><test>test</test></xml>";
$xml = simplexml_load_string($string);
if(count($xml->children() == 0) {
echo "<helper>".$xml->asXML()."</helper>";
} else {
// has root element;
}