SimpleXML:无法将子节点插入具有属性的节点 [英] SimpleXML: Can't insert child into node with attributes

查看:29
本文介绍了SimpleXML:无法将子节点插入具有属性的节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要编写一个 Web 服务来创建 FM XML 文件.

I need to code a web service that creates a FM XML file.

预期的输出文件如下所示:

The expected output file looks like this:

<?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" 引发以下错误.去掉冒号 ':' 解决了错误信息问题,但不会产生相同的文件

  • The TIMEFORMAT="k:mm:ss" in the DATABASE node provokes the following error. Removing the colons ':' solves the error message problem but won't produce the same file

第 2 行第 80 列错误:解析属性名称时出错

只要 RESULTSET 中有FOUND="3""和一个子节点,RESULTSET 节点就会引发错误.如果没有孩子,它不会导致任何错误.如果删除 FOUND="3" 不会出错.

As soon as there is 'FOUND="3"' AND a child in the RESULTSET, the RESULTSET node provokes an error. It does not cause any error if there is no child. No error if the FOUND="3" is removed.

此页面包含以下错误:

第 2 行第 2199 列错误:预期为>"

非常感谢任何帮助!

推荐答案

使用

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

SimpleXML 提供的方法.

method that SimpleXML provides.

这篇关于SimpleXML:无法将子节点插入具有属性的节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆