Php 如何正确调整节点的XML层次结构

Php 如何正确调整节点的XML层次结构,php,html,dom,Php,Html,Dom,我想使用html表单创建一个xml文件。我能够创建一个xml文件。。。但是,当某个骗子来的时候,它却犯了错误。请检查我的代码或更新它。下面是我想要的输出 输出:-TODO 待办事项 待办事项 创建文本节点后,代码中出现语法错误,并且需要对DOM层次结构进行语义更改。这是您更正的代码,将子项添加到$project <?php $text5 = htmlentities($_POST['tb5']); $text6 = htmlentities($_POST['tb6']); $text7

我想使用html表单创建一个xml文件。我能够创建一个xml文件。。。但是,当某个骗子来的时候,它却犯了错误。请检查我的代码或更新它。下面是我想要的输出

输出:-TODO
待办事项
待办事项

创建文本节点后,代码中出现语法错误,并且需要对DOM层次结构进行语义更改。这是您更正的代码,将子项添加到$project

<?php

$text5 = htmlentities($_POST['tb5']);
$text6 = htmlentities($_POST['tb6']);
$text7 = htmlentities($_POST['tb7']);

$xmlns = 'http://maven.apache.org/POM/4.0';
$document = new DOMDocument();
$project = $document
  ->appendChild($document->createElementNS($xmlns, 'project'));
$project->setAttributeNS(

  'http://www.w3.org/2001/XMLSchema-instance',
  'xsi:schemaLocation',
  'http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd'
);

$project
  ->appendChild($document->createElementNS($xmlns, 'url'))
  ->appendChild($document->createTextNode($text5));


$license = $project
  ->appendChild($document->createElementNS($xmlns, 'licenses'))
  ->appendChild($document->createElementNS($xmlns, 'license')) ;

$license
  ->appendChild($document->createElementNS($xmlns, 'name'))
  ->appendChild($document->createTextNode($text6));

$license
  ->appendChild($document->createElementNS($xmlns, 'connection'))
  ->appendChild($document->createTextNode($text7));

$document->save("d.xml");

?>
appendChild($document->createElements($xmlns,'project');
$project->setAttributeNS(
'http://www.w3.org/2001/XMLSchema-instance',
“xsi:schemaLocation”,
'http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd'
);
$project
->appendChild($document->CreateElements($xmlns,'url'))
->appendChild($document->createTextNode($text5));
$license=$project
->appendChild($document->createElements($xmlns,'licenses'))
->appendChild($document->createElements($xmlns,'license'));
$license
->appendChild($document->createElements($xmlns,'name'))
->appendChild($document->createTextNode($text6));
$license
->appendChild($document->createElements($xmlns,'connection'))
->appendChild($document->createTextNode($text7));
$document->save(“d.xml”);
?>

编辑:我稍微修改了脚本以匹配指定的XML输出格式。您正在创建第二个url节点,但不是正确的名称/连接节点。这些措施现已到位

您得到了什么错误?如果我删除最后2行->appendChild($document->CreateElements($xmlns,'name'))->appendChild($document->createTextNode($text7));然后xml被生成,但我还需要最后两行。错误我得到这个-->解析错误:语法错误,意外的'->'(T_OBJECT_操作符)注意
->appendChild($document->createTextNode($text6))中的分号您可能希望稍微重述一下这个问题,因为尽管您有语法错误,但其他用户可能会受益于如何正确调整节点的XML层次结构(语义),这是问题的真正症结所在。:-我希望在许可证和许可证中包含“url”和“名称”。在您的解决方案中,只有url在其中。名称在外部我修改了答案,在许可证内部添加了名称和连接。我并没有把url放在里面,因为在您的示例XML中,它在外面。让我知道这是否是您现在正在寻找的格式,或者更新您的问题的XML示例输出,我将匹配它。