如何使用simplexml在xml中的属性之前添加命名空间名称

时间:2010-02-04 04:17:54

标签: simplexml

如何在新创建的标记的属性之前添加名称空间名称,例如

<Data ss:Type="String">this the value of data</Data>

但只能创建

<Data Type="String">this the value of data</Data>

所以我无法在atttbute之前添加“ss:”。

先谢谢

有梦想日

1 个答案:

答案 0 :(得分:0)

SimpleXml PHP manual中有人在评论部分举了一个很好的例子。

以下是我如何使用它。

假设您在文件xml.php中有以下XML:

<?php
$string = <<<XML
<Row>
  <Cell>
    <Data>Dolly Parton</Data>
  </Cell>
  <Cell>
    <Data>Islands in the Stream</Data>
  </Cell>
  <Cell>
    <Data>what</Data>
  </Cell>
  <Cell>
    <Data>1-29-2010</Data>
  </Cell>
</Row>
XML;

您可以读取此文件并使用XPath添加所需的属性。

 <?php 
        include("xml.php"); 

        $sxe = new SimpleXMLElement($string);

        $data = $sxe->xpath('//Data');

    foreach ($data as $value)
    {
        $value->addAttribute('ss:Type', 'String', 'http://www.w3.org/2001/XMLSchema-instance'); 
        }

        echo $sxe->asXML();

    ?>

这是我得到的输出:

<Row>
  <Cell>
    <Data xmlns:ss="http://www.w3.org/2001/XMLSchema-instance" ss:Type="String">Dolly Parton</Data>
  </Cell>
  <Cell>
    <Data xmlns:ss="http://www.w3.org/2001/XMLSchema-instance" ss:Type="String">Islands in the Stream</Data>
  </Cell>

  <Cell>
    <Data xmlns:ss="http://www.w3.org/2001/XMLSchema-instance" ss:Type="String">what</Data>
  </Cell>
  <Cell>
    <Data xmlns:ss="http://www.w3.org/2001/XMLSchema-instance" ss:Type="String">1-29-2010</Data>
  </Cell>
</Row>