【问题标题】:Warnings when loading XML using simplexml_load_file()使用 simplexml_load_file() 加载 XML 时的警告
【发布时间】:2016-09-02 04:59:04
【问题描述】:

我有一个名为 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: namespace warning : xmlns: URI po.xsd >在第 3 行的 C:\xampp\htdocs\inventory\po.php 中不是绝对的

警告:simplexml_load_file():在第 3 行的 C:\xampp\htdocs\inventory\po.php 中

警告:simplexml_load_file(): ^ in C:\xampp\htdocs\inventory\po.php on line >3');

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

【问题讨论】:

    标签: php xml


    【解决方案1】:

    此示例 xml 无效。尝试关闭&lt;DETAIL&gt; 标签。

    【讨论】:

      【解决方案2】:

      您的 xml 中有两个错误

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

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

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

      这里已经讨论过这个问题:Error loading xml in php (not absolute)

      如果您使用xmlns="http://www.example.com/po.xsd" 之类的内容删除或修复此部分,它应该可以工作。

      正如 Jeff Pucket 所说,您的标签 &lt;DETAIL&gt; 应该关闭

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-26
        • 2018-02-11
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多