0

我有 xml 文档的示例,并且 php 试图创建相同的 xml。

这是 xml 文档示例的一部分(如使用 Web 浏览器打开时显示的那样)

-<DeclarationFile>
  -<Declaration Id="DEC">
    -<DokPVNv4>

需要创建相同的。我的php代码

$DOM = new DOMDocument('1.0','UTF-8');

$root = $DOM->createElement('DeclarationFile');
$DOM->appendChild($root);

$child_declaration_id = $DOM->createElement('Declaration');
$root->appendChild($child_declaration_id);

$child_declaration_id_att = $DOM->createAttribute('Id');
$child_declaration_id->appendChild($child_declaration_id_att);

$att_child_declaration_id_text = $DOM->createTextNode('DEC');
$child_declaration_id_att->appendChild($att_child_declaration_id_text);

$DokPVNv4 = $DOM->createElement('DokPVNv4');
$root->appendChild($DokPVNv4);

在输出(网络浏览器)中得到这个

-<DeclarationFile>
  <Declaration Id="DEC"/>
  <DokPVNv4/>
 </DeclarationFile>
  1. 在 xml 的示例中,有-before<Declaration Id="DEC"><DokPVNv4>。用我的php代码没有。这些是什么意思-以及如何用 php 创建它们?

  2. 在 xml 的示例中<Declaration Id="DEC"><DokPVNv4>没有/. 使用我的代码,我得到/. 如何删除它们(以及这些是什么/意思)?

我想所有的差异都与根元素有关?

更新。目前从答案中可以理解:如果某些元素/标签没有结束标签,则元素以/. 而且- +,是的,浏览器会创建它们。

4

2 回答 2

2

这可能是浏览器在/按钮中-绘图,允许您打开/关闭这些元素。这是XML 规范所必需的。任何一个标签都是容器,例如+-/>

<foo>
   ...
</foo>

或者它们是一个单例标签,在这种情况下它们必须是自关闭的,例如

<bar />

您的代码没有显式添加它们,但由于它们在 xml 中是必需的,因此 DOM 系统正在为您添加它们。

于 2013-08-02T17:40:05.077 回答
1

您的代码创建了嵌套错误的元素。尝试改变这个

$root->appendChild($DokPVNv4);

对此

 $child_declaration_id->appendChild($DokPVNv4);
于 2013-08-02T17:47:35.973 回答