Как я могу добавить имя пространства имен перед атрибутом в XML с помощью Simplexml - PullRequest
0 голосов
/ 04 февраля 2010

как мне добавить имя пространства имен перед атрибутом вновь созданного тега, например

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

, но можно создать только

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

, поэтому я не могу добавить "ss:" доatttbute.

Заранее спасибо

Днем мечты

1 Ответ

0 голосов
/ 04 февраля 2010

В руководстве SimpleXml PHP кто-то привел хороший пример в разделе комментариев.

Вот как я заставил это работать.

Скажем, у вас есть следующий XML в файле xml.php:

<?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>
...