2011-12-31 100 views
0

我想加载一个XML文件,然后评估XML中的2个不同的特定标签,并将字符串拉入变量..我能够获得变量工作,但我无法做到这一点需要两个变量,因为事情是被写在功能..Php解析XML和评估多行设置单独的变量

这是我加载XML文件...

$test1 = file_get_contents('testfile1.xml'); 
$dom = new DOMDocument(); 
@$dom->loadHTML($test1); 

这是我评价不同的线..

//line1 

$domx1 = new DOMXPath($dom); 
$entries1 = $domx1->evaluate("//dominant_period_sec"); 

$periodArray = array(); 
foreach ($entries1 as $entry1) { 

$wavePeriod = $entry1->nodeValue; 
} 

//line2 

$domx2 = new DOMXPath($dom); 
$entries2 = $domx2->evaluate("//dominant_wind_dir"); 


$avgwaveHeightArray = array(); 
foreach ($entries2 as $entry2) { 

$waveFeet = $entry2->nodeValue; 

} 

回答

0

我会将此添加为评论,因为这不是真的答案,但我没有特权。

如果这是一个格式良好的XML文件,为什么使用loadHTML?为什么不是:

$dom = new DOMDocument(); 
@$dom->load('testfile1.xml'); 

我猜的答案是:

变量$ wavePeriod和$ waveFeet越来越内覆盖for循环,因为你改写它们:)。您可以尝试将每个项目推送到一个数组中,或类似的东西 - 也许连接它们。像这样的东西,也许?

$waveFeet = array(); 
foreach ($entries2 as $entry2) { 
array_push($waveFeet, $entry2->nodeValue); 
} 

$waveFeet = ''; 
foreach ($entries2 as $entry2) { 
$waveFeet .= $entry2->nodeValue; 
}