2014-01-27 46 views
1

我需要编写一个用于创建FM XML文件的Web服务。SimpleXML:无法将子项插入具有属性的节点

预期的输出文件看起来是这样的:

<?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”引发以下错误。卸下冒号“:”解决了错误信息的问题,但在80列将不会产生相同的文件

    错误第2行:错误解析参数,因为有“FOUND一旦命名

  • = “3”'和RESULTSET中的一个孩子,这个RESULTSET节点会引发一个错误。如果没有孩子,它不会导致任何错误。如果FOUND =“3”被删除,则无错误。

    此页面包含以下错误:

    第2行错误在2199柱:预计 '>'

任何帮助,非常感谢!

+0

奇怪的是,这与[此问题](http://stackoverflow.com/q/21379760/157957)的错误完全相同,显然是由不同的用户在同一天提出的! – IMSoP

回答

1

通过使用

$node->addAttribute("...","...") 

方法,该方法的SimpleXML提供解决这两种情况。

相关问题