PHP для анализа XML и оценки нескольких строк, чтобы установить отдельные переменные - PullRequest
0 голосов
/ 31 декабря 2011

Я пытаюсь загрузить XML-файл, а затем оценить 2 различных специфических тега в 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;

}

1 Ответ

0 голосов
/ 31 декабря 2011

Я бы добавил это как комментарий, потому что это не совсем ответ, но у меня нет привилегий.

Если это правильно сформированный 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...