使用Php创建Xml?

时间:2015-05-28 09:05:29

标签: php xml dom

我想用php创建这种类型的xml给我一些建议 谁能纠正这个我无法创建层次结构的PHP代码。 我正在从html表单(文本框)

中获取输入

输出是: -

project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="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">

        <model>4.0.0</model>

 <licenses>
        <license>
            <name>TODO</name>
            <url>TODO</url>
        </license>
    </licenses>

    </project>

<!-- end snippet -->

php代码: -

$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));


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

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

?>

1 个答案:

答案 0 :(得分:0)

PHP支持DOM 3 Api。您可以创建节点并将它们附加到文档中。

您问题中的XML使用命名空间,因此您必须为此命名空间创建节点(使用方法的* NS变体)。这会根据需要添加命名空间定义。

$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, 'model'))
  ->appendChild($document->createTextNode('4.0.0'));

$document->formatOutput = TRUE;
echo $document->saveXml();