2011-06-12 162 views
0

这里是我最好的我可以确定需要做什么。但即时通讯不知如何才能正常工作。将一个DOM对象的节点附加到另一个DOM

$ xml和$ xmlfile都是DOM对象/ XML。 $ xml是我想要追加到$ mxlfile中的数据的来源。

$ xml作为dom对象从另一个函数发送到函数。

这就是xml对我来说的样子。

<?xml version="1.0" encoding="utf-8"?> 
<!-- Automatically generated data from EVE-Central.com --> 
<!-- This is the new API :-) --> 
<evec_api version="2.0" method="marketstat_xml"> 
    <marketstat> 
    <type id="18"> 
     <all> 
     <volume>1934078988.00</volume> 
     <avg>98.31</avg> 
     <max>26721.00</max> 
     <min>0.53</min> 
     <stddev>1339.78</stddev> 
     <median>26.31</median> 
     <percentile>0.00</percentile> 
     </all> 
     <buy> 
     <volume>1894081100.00</volume> 
     <avg>20.77</avg> 
     <max>31.31</max> 
     <min>0.53</min> 
     <stddev>7.25</stddev> 
     <median>26.00</median> 
     <percentile>28.17</percentile> 
     </buy> 
     <sell> 
     <volume>39997888.00</volume> 
     <avg>34.32</avg> 
     <max>26721.00</max> 
     <min>4.01</min> 
     <stddev>2339.28</stddev> 
     <median>29.80</median> 
     <percentile>26.76</percentile> 
     </sell> 
    </type> 
    <type id="ectera"> 
    </type> 
    </marketstat> 
</evec_api> 

而在这里,我的功能的一部分,我不能工作。

$xml->preserveWhiteSpace = FALSE; 
$xml->formatOutput = TRUE; 
if(is_file($file)){ 
$xmlfile = new DOMDocument; 
$xmlfile->load($file); 
$dst = $xmlfile->getElementsByTagName('marketStat'); 
foreach($xml->getElementsByTagName('type') as $child){ 
$dst->appendChild($xmlfile->importNode($child));} 
$xmlfile->save($file); 
} 

我知道有一些错误,但我只是自学XML和DOM,因此帮助将非常感激。

+0

为什么不使用'SimpleXML'。这很简单 – Pwnna 2011-06-12 01:29:09

回答

0
<?php 

if(is_file($file)) 
{ 
    $xmlfile = new DOMDocument; 

    $xml->preserveWhiteSpace = FALSE; 
    $xml->formatOutput = TRUE; 

    $xmlfile->load($file); 

    $dst = $xmlfile->getElementsByTagName('marketStat'); 
    $parentLength = $dst->length; 

    for($i=0; $i< $parentLength ; $i++) 
    { 
     foreach($xmlfile->getElementsByTagName('type') as $child) 
     { 
      $dst->item($i)->appendChild($child); 
     } 
    } 
    $xmlfile->save($file); 
} 

你的代码中有两处错误

  1. 您创建文档后,您可以设置DOM解析器选项。

  2. 您不能在DOM对象列表上使用appendChild。您必须逐个将它们添加到个别DOM元素中。

相关问题