2013-02-18 75 views
0

我有我已经建立了使用下面的示例XML字符串:PHP到XML插件组

//add root 
$Add = $dom->appendChild($dom->createElement('Add')); 
//pCase 
$pCase = $Add->appendChild($dom->createElement('pCase')); 

//add elements 
$LeadGenID = $pCase->appendChild($dom->createElement('LeadGenID')); 
$LeadGenID->appendChild($dom->createTextNode('22')); 

$Debtor = $pCase->appendChild($dom->createElement('Debtor')); 
//address fields 
$Addresses = $Debtor->appendChild($dom->createElement('Addresses')); 
$Address = $Addresses->appendChild($dom->createElement('Address')); 
//array of address objects should go here 

$test1 = $dom->saveXML(); 
$sxe = simplexml_load_string($test1); 

if ($sxe === false) { 
echo 'Error while parsing the document'; 
    exit; 
} 

    $dom_sxe = dom_import_simplexml($sxe); 
    if (!$dom_sxe) { 
     echo 'Error while converting XML'; 
     exit; 
    } 

    $dom = new DOMDocument('1.0', 'utf-8'); 
    $dom_sxe = $dom->importNode($dom_sxe, true); 
    $dom_sxe = $dom->appendChild($dom_sxe); 

    echo $dom->save('application.xml'); 

这则输出在我的XML如下:

<Add> 
<pCase> 
    <LeadGenID>22</LeadGenID> 
    <Debtor> 
     <Addresses><Address/></Addresses> 
    </Debtor> 
</pCase> 

我还需要输出数组到这个XML,使之充分输出如下:

<Add> 
<pCase> 
    <LeadGenID>22</LeadGenID> 
    <Debtor> 
     <Addresses> 
      <Address> 
       <Street>Some street</Street> 
       <Postcode>Some postcode</Postcode> 
      </Address> 
     </Addresses> 
    </Debtor> 
</pCase> 

我试图做到这一点使用

$address_array = array (
    $_POST['Street'] => 'Street', 
    $_POST['Postcode'] => 'Postcode' 
); 
$xml = new SimpleXMLElement('<Address/>'); 
array_walk_recursive($address_array, array ($xml, 'addChild')); 

,但在这一点上,我完全失去了。我一直在考虑这个API是稀疏的文档至少可以这样说,但我发现它接近,但我需要作为网关的阵列输入地址。我是PHP新手,因为我主要是一名前端开发人员,他通常只在PHP中完成简单的联系表单等。

我该如何输出我上面给出的XML的例子吗?

感谢

+0

欢迎堆栈溢出。您可以使用工具栏按钮格式化源代码块。这次我已经为你修好了。 – 2013-02-18 15:37:38

+1

'$ Address'是什么?为什么混合两种不同的PHP XML API? – 2013-02-18 15:42:06

+0

抱歉$地址是我的XML中的一个节点。这可能不是很清楚,我只是在一个简短的例子中,所以你可以看到我使用的是什么代码。 – ajguk 2013-02-18 15:44:57

回答

0

随机怪异的东西,我有现货:

  • 你开始new SimpleXMLElement('<Address/>')但你的根节点是<Addresses>
  • $Address变量从哪儿
  • 弹出一个$dom对象持久性有机污染物从高达无处
  • 你叫createTextNode()其中:
    1. 这是不是一个SimpleXML的方法,而是一个DOMDocument方法
    2. 需要一个字符串作为参数,但它有一个SimpleXMLElement实例
    3. 喂创建文本节点
+0

好的 - 那么如何按照上面给出的示例插入数组?根节点是'地址'与另一个节点在这个被称为'地址',这将是数组中的对象或地址信息的集合。如果我给出了一个我想要达到的XML示例,会更好吗? – ajguk 2013-02-18 15:55:43

+0

您可以从修复已知问题开始。注入随机代码直到它工作可能需要很长时间才能成功。 – 2013-02-18 16:02:37

+0

那么在这种情况下我不能使用SimpleXMLElement吗?我会解决你的问题并发回。 – ajguk 2013-02-18 16:07:34