解决方案1:
原来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字符串
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
;i
<
xmlDomVersions.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
;i
<
xmlDomVersions.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
>
1
cNname
>
<
cIP
>
1
cIP
>
Company
>
<
Company
>
<
cNname
>
2
cNname
>
<
cIP
>
2
cIP
>
Company
>
<
Company
>
<
cNname
>
3
cNname
>
<
cIP
>
3
cIP
>
Company
>
<
Company
>
<
cNname
>
4
cNname
>
<
cIP
>
4
cIP
>
Company
>
<
Company
>
<
cNname
>
5
cNname
>
<
cIP
>
5
cIP
>
Company
>
<
Company
>
<
cNname
>
6
cNname
>
<
cIP
>
6
cIP
>
Company
>
DongFang
>
使用方法
var xmldoc=loadXML(text.xml)
var elements = xmldoc.getElementsByTagName("Company");
for (var i = 0; i < elements.length; i++) { var name = elements[i].getElementsByTagName("cNname")[0].firstChild.nodeValue; var ip = elements[i].getElementsByTagName("cIP")[0].firstChild.nodeValue;
}