使用simplexml_load_file()加载XML时发出警告


Warnings when loading XML using simplexml_load_file()

我有一个名为po.XML的XML文件:

<?xml version="1.0" encoding="utf-8"?>
    <DOCUMENT xmlns="po.xsd">
        <PO>
            <HEADER>
                <PO_CODE/>
                <PO_NAME/>
                <REFF_NO/>
            </HEADER>
            <DETAIL>
                <CONT>
                    <NO_CONT/>
                    <UK_CONT/>
                    <NO_SEGEL/>
                    <JNS_CONT/>
                    <ISO_CODE/>
                </CONT>
            <DETAIL>
        </PO>
    </DOCUMENT>

当我使用以下PHP脚本加载文件时:

$XML = simplexml_load_file('po.xml');

我收到以下警告:

警告:simplexml_load_file():po.xml:2:命名空间警告:xmlns:URI po.xsd>在第3行上的C:''examplep''htdocs''inventory''po.php中不是绝对的

警告:simplexml_load_file():位于C:''examplep''htdocs''inventory''po.php的第3行

警告:行>上C:''examplep''htdocs''inventory''po.php中的simplexml_load_file():^;3');

我想将po.XML的XML结构作为字符串进行回显。

此示例xml无效。尝试关闭<DETAIL>标记。

您的xml 中有两个错误

首先,xmlns="po.xsd"应该使用绝对路径。

从libxml网页http://www.xmlsoft.org/namespaces.html:

名称空间值必须是一个绝对的URL,但URL不必指向Web上的任何现有资源。

这里已经讨论了这个问题:在php(非绝对)中加载xml时出错

如果你用xmlns="http://www.example.com/po.xsd"之类的东西移除或修复这个零件,它应该可以工作。

正如Jeff Pucket所提到的,你的标签<DETAIL>应该关闭

<DETAIL>
   <CONT>
   <NO_CONT/>
   ....
   </CONT>
</DETAIL>