如何使用PHP检查XML中是否存在标记?

如何使用PHP检查XML中是否存在标记?,php,xml,Php,Xml,如何检查XML文件中是否存在标记名 所以如果我想 $dom->getElementsByTagName('error') 它不存在,它会打印出类似错误消息的东西 编辑: 我正在使用API。因此,当用户输入错误的用户名时,会加载另一个包含标签的XML文件 但是,如果他们输入了正确的用户名,XML文件就不包含标记,因此我正在寻找一种方法来检查XML中是否存在错误标记。这很好,但是如果加载的XML不包含标记(这意味着它可以工作),它仍然会显示消息。哈!在没有看到您的代码和数据的情况下,我无法确定发生了

如何检查XML文件中是否存在标记名

所以如果我想

$dom->getElementsByTagName('error')

它不存在,它会打印出类似错误消息的东西

编辑:

我正在使用API。因此,当用户输入错误的用户名时,会加载另一个包含标签
的XML文件


但是,如果他们输入了正确的用户名,XML文件就不包含
标记,因此我正在寻找一种方法来检查XML中是否存在错误标记。

这很好,但是如果加载的XML不包含标记(这意味着它可以工作),它仍然会显示消息。哈!在没有看到您的代码和数据的情况下,我无法确定发生了什么。我所知道的是DOMDocument对格式错误的XML(很容易生成)不是很宽容。如果DOMDocument使用了一些不好的XML,我会认为它会严重阻塞,但如果不是这样,则对于包含错误标记的XML,它可能会显示$errorNodes->长度为零。您可以尝试打印DOMDocument,看看是否值得测试,以确保XML加载正确。欢迎使用Stack Overflow!虽然这个答案可能是正确和有用的,但如果你想解释一下它是如何帮助解决问题的,那就更好了。如果有一个变化(可能是无关的)导致它停止工作,并且用户需要了解它曾经是如何工作的,那么这在将来变得特别有用。我不知道为什么需要对此进行解释。这是完全有道理的。伟大的解决方案!
$dom = new DOMDocument(); 
$dom->load( 'some.xml' ); 

$errorNodes = $dom->getElementsByTagName('error'); 

if($errorNodes->length == 0)
{
  message('no error nodes'); // user defined
}
$errors = $dom->getElementsByTagName('error');
$exists = $errors->length > 0;

if (!$exists ) {
    echo 'Error message..';
}
$error=false;
$AllElements = $xmlDoc->getElementsByTagName('*');
    foreach ($AllElements as $OneElement) {
    if (($OneElement->tagName)=='error') { $error = true; }
    }
if $error {
    message('error'); // user defined
}
else
{
    message('no error nodes'); // user defined
}