SimpleXML的:无法插入孩子与属性节点(SimpleXML: Can't insert

2019-10-19 07:00发布

我需要的代码创建了一个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"');

有两件事情,我不能让工作:

  • 所述TIMEFORMAT =“K:MM:SS”数据库中的节点引发下面的错误。 卸下冒号“:”解决的错误消息的问题,但不会产生相同的文件

    错误第2行,在80柱:错误解析属性名

  • 只要有“FOUND =‘3’”和ResultSet中的孩子,结果集节点将产生一个错误。 如果没有孩子这不会导致任何错误。 如果没有找到=“3”被删除错误。

    此页面包含以下错误:

    错误第2行于2199柱:预期“>”

任何帮助非常感谢!

Answer 1:

通过使用解决了这两个病例

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

方法,该方法的SimpleXML提供。



文章来源: SimpleXML: Can't insert child into node with attributes