/***错误的xml node 未闭合***/
$doc = new DOMDocument();
$doc->loadXML('<root><node></root>');
echo $doc->saveXML();/******正确的xml*****/
$doc = new DOMDocument();
$doc->loadXML('<root><node/></root>');
echo $doc->saveXML();/*
DTD validation
*/
DOMDocument->validate()

解决方案 »

  1.   

    $dom = new DOMDocument;
    $dom->validateOnParse = true;
    $dom->formatOutput = true;
    开启验证XML
      

  2.   

    <?php
    $dom = new DOMDocument;
    $dom->Load('book.xml');
    if ($dom->validate()) {
        echo "This document is valid!\n";
    }
    ?> http://cn.php.net/manual/zh/function.dom-domdocument-validate.php
      

  3.   

    我分析,楼主的问题是:一个乱七八糟的字符串如:<yizi>aaa<yizi>类似格式的字符串,用dom去load,直接出错。显然,用正则表达式才是正道,虽然很麻烦很繁琐
      

  4.   

    楼上正解,就是一个字符串,怎么看是不是符合xml格式要求,帮帮忙
      

  5.   

    都给你例子了,运行一下就都明白,你怎么就不去尝试呢 >_</*
    DOMDocument->loadXML()
    (no version information, might be only in CVS)DOMDocument->loadXML() --  Load XML from a string 
    说明
    class DOMDocument { bool loadXML ( string source [, int options] )}
    Loads an XML document from a string. This method may also be called statically to load and create a DOMDocument object. The static invocation may be used when no DOMDocument properties need to be set prior to loading. 参数source
    The string containing the XML. 返回值
    如果成功则返回 TRUE,失败则返回 FALSE。 <======看这里啊*//*
    字符串随便写
    <root><node ></root>
    <yizi>aaa<yizi>*/$doc = new DOMDocument();
    if( @$doc->loadXML('<root><node ></root>') ) {
    echo $doc->saveXML();
    echo "xml字符串合法!";
    }
    else
    {
    echo "xml string error!";
    }exit;字符串放到里面就可以了,检验返回值,符合就通过,不符合就报错。
      

  6.   

    DOMDocument->validate()看你的需求也用不到,这个是验证XML是否符合他的DTD元素类型声明的其他更加优秀的还有,不看也罢,够用就好。
    DOMDocument->schemaValidate()
    DOMDocument->schemaValidateSource()