您好,欢迎访问一九零五行业门户网

php输出xml格式报错--XML或文本声明不在实体的开头位置

解决方案1: http://blog.csdn.net/lilien1010/article/details/8793949 原来php文件保存问uft8式是会输出另外的空白字符, 将输出xml流的php文件修改为ansi式的就好了。 (测试失败...) 解决方案2: 在调用echo $dom-savexml(); 之前先清空输出缓冲区 ob_c
解决方案1:
http://blog.csdn.net/lilien1010/article/details/8793949
原来php文件保存问uft8格式是会输出另外的空白字符, 将输出xml流的php文件修改为ansi格式的就好了。
(测试失败...)
解决方案2:
在调用 echo $dom->savexml(); 之前先清空输出缓冲区
ob_clean();//for kill blank in document at first char
(测试ok)
备注:本人的版本php4.8+apache2.2,可能版本不同,解决方案不同
********************************************************************************************
附:js解析xml文件和xml字符串
http://www.cnblogs.com/chjw8016/archive/2011/07/12/2104269.html
js解析xml文件
script type='text/javascript'>
    loadxml = function(xmlfile){
        var xmldoc=null;
        //判断浏览器的类型
        //支持ie浏览器
        if(!window.domparser && window.activexobject){
            var xmldomversions = ['msxml.2.domdocument.6.0','msxml.2.domdocument.3.0','microsoft.xmldom'];
            for(var i=0;ixmldomversions.length;i++){
                try{
                    xmldoc = new activexobject(xmldomversions[i]);
                    break;
                }catch(e){
                }
            }
        }
        //支持mozilla浏览器
        else if(document.implementation && document.implementation.createdocument){
            try{
                /* document.implementation.createdocument('','',null); 方法的三个参数说明
                 * 第一个参数是包含文档所使用的命名空间uri的字符串; 
                 * 第二个参数是包含文档根元素名称的字符串; 
                 * 第三个参数是要创建的文档类型(也称为doctype)
                 */
                xmldoc = document.implementation.createdocument('','',null);
            }catch(e){
            }
        }
        else{
            return null;
        }
if(xmldoc!=null){
            xmldoc.async = false;
            xmldoc.load(xmlfile);
        }
        return xmldoc;
    }
/script>
js解析xml字符串
script type='text/javascript'>
    loadxml = function(xmlstring){
        var xmldoc=null;
        //判断浏览器的类型
        //支持ie浏览器 
        if(!window.domparser && window.activexobject){   //window.domparser 判断是否是非ie浏览器
            var xmldomversions = ['msxml.2.domdocument.6.0','msxml.2.domdocument.3.0','microsoft.xmldom'];
            for(var i=0;ixmldomversions.length;i++){
                try{
                    xmldoc = new activexobject(xmldomversions[i]);
                    xmldoc.async = false;
                    xmldoc.loadxml(xmlstring); //loadxml方法载入xml字符串
                    break;
                }catch(e){
                }
            }
        }
        //支持mozilla浏览器
        else if(window.domparser && document.implementation && document.implementation.createdocument){
            try{
                /* domparser 对象解析 xml 文本并返回一个 xml document 对象。
                 * 要使用 domparser,使用不带参数的构造函数来实例化它,然后调用其 parsefromstring() 方法
                 * parsefromstring(text, contenttype) 参数text:要解析的 xml 标记 参数contenttype文本的内容类型
                 * 可能是 text/xml 、application/xml 或 application/xhtml+xml 中的一个。注意,不支持 text/html。
                 */
                domparser = new  domparser();
                xmldoc = domparser.parsefromstring(xmlstring, 'text/xml');
            }catch(e){
            }
        }
        else{
            return null;
        }
return xmldoc;
    }
/script>
测试xml
xml version=1.0 encoding=utf-8 ?>
dongfang>
  company>
    cnname>1cnname>
    cip>1cip>
  company>
  company>
    cnname>2cnname>
    cip>2cip>
  company>    
  company>
    cnname>3cnname>
    cip>3cip>
  company>
  company>
    cnname>4cnname>
    cip>4cip>
  company>
  company>
    cnname>5cnname>
    cip>5cip>
  company>
  company>
    cnname>6cnname>
    cip>6cip>
  company>
dongfang>
使用方法
 var xmldoc=loadxml(text.xml)
 var elements = xmldoc.getelementsbytagname(company);
 for (var i = 0; i                 var name = elements[i].getelementsbytagname(cnname)[0].firstchild.nodevalue;
                var ip = elements[i].getelementsbytagname(cip)[0].firstchild.nodevalue;               
}
其它类似信息

推荐信息