【发布时间】:2014-02-18 04:04:17
【问题描述】:
我需要编写一个创建 FM XML 文件的 Web 服务。
预期的输出文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="27/11/2002" NAME="FileMaker Pro" VERSION="6.0Dv4"/>
<DATABASE DATEFORMAT="d.M.yyyy" LAYOUT="" NAME="Schlüssel Adresse für green" RECORDS="3" TIMEFORMAT="k:mm:ss"/>
<METADATA>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Datum" TYPE="DATE"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Sprache Typ" TYPE="TEXT"/>
...
</METADATA>
<RESULTSET FOUND="3">
<ROW MODID="0" RECORDID="1">
<COL>
<DATA>12.11.2012</DATA>
</COL>
...
</ROW>
</RESULTSET>
</FMPXMLRESULT>
这是我的 php 代码:
$xml = new SimpleXMLElement('<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"></FMPXMLRESULT>');
$xml->addChild('ERRORCODE',0);
$xml->addChild('PRODUCT BUILD="27/11/2002" NAME="FileMaker Pro" VERSION="6.0Dv4"');
$xml->addChild('DATABASE DATEFORMAT="d.M.yyyy" LAYOUT=" " NAME="Schlüssel Adresse für green" RECORDS="3" TIMEFORMAT="k mm ss" ');
$node = $xml->addChild('METADATA');
$node->addChild('FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Datum" TYPE="DATE"');
$node->addChild('FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Sprache Typ" TYPE="TEXT"');
...
$node = $xml->addChild('RESULTSET FOUND="3"');
$node->addChild('FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Datum" TYPE="DATE"');
有两件事我不能上班:
-
DATABASE 节点中的 TIMEFORMAT="k:mm:ss" 引发以下错误。删除冒号 ':' 解决了错误消息问题,但不会生成相同的文件
第 2 行第 80 列的错误:解析属性名称时出错
-
只要在 RESULTSET 中有 'FOUND="3"' 和一个子节点,RESULTSET 节点就会引发错误。如果没有孩子,它不会导致任何错误。如果 FOUND="3" 被删除,则不会出错。
此页面包含以下错误:
第 2 行第 2199 列的错误:预期为 '>'
非常感谢任何帮助!
【问题讨论】:
-
奇怪的是,这与this question的错误完全一样,显然是同一天由不同的用户提出的!
标签: php xml xml-parsing simplexml