kaiser Zaido
Новичок
кодировка в XML(dom xml)
PHP Version 4.3.10
суть вопроса такая...
я обрабатываю xml документ:
[xml]<?xml version="1.0"?>
<ttest>
<test name="Интегральная математика" num_test="3"></test>
<tquest quest="Что такое интеграл?" numb_answ="3">
<tansw tf="1" ball="1">Это знак такой</tansw>
<tansw tf="0" ball="0">Это система исчисления</tansw>
<tansw tf="0" ball="0">Это пятка зулуса</tansw>
</tquest>
[skipped]
<tresult result="1">Непрошел тест</tresult>
<tresult result="3">Прошел тест</tresult>
</ttest>[/xml]
обрабатываю таким кодом:
на выходе получаю вот что:
первой приходит мысль сказать кодировку в самом XML документе, но когда я пишу там <?xml version="1.0" encoding="windows-1251" ?>, то сервер выдает мне в ответ Fatal error: Call to a member function on a non-object in z:\home\zaido1.net\www\test\xml.php on line 14
значит xml dom не привык работать с объявленной кодировкой
подскажите плз как быть, были ли у кого-то такиеже проблемы...
PHP Version 4.3.10
суть вопроса такая...
я обрабатываю xml документ:
[xml]<?xml version="1.0"?>
<ttest>
<test name="Интегральная математика" num_test="3"></test>
<tquest quest="Что такое интеграл?" numb_answ="3">
<tansw tf="1" ball="1">Это знак такой</tansw>
<tansw tf="0" ball="0">Это система исчисления</tansw>
<tansw tf="0" ball="0">Это пятка зулуса</tansw>
</tquest>
[skipped]
<tresult result="1">Непрошел тест</tresult>
<tresult result="3">Прошел тест</tresult>
</ttest>[/xml]
обрабатываю таким кодом:
PHP:
<?php
$qu=array();
$ans=array();
$tres=array();
$test=array();
$xml = join('',file('integr.xml'));
$xml = xmldoc($xml);
$root = $xml->root();
$nodes = $root->children();
foreach($nodes as $node)
{
if ($node->tagname=='test')
{
echo $test['name']=$node->get_attribute('name');
echo $test['num_test']=$node->get_attribute('num_test');
}
if ($node->tagname=='tquest')
{
$tquest = array();
$tquest['quest'] = $node->get_attribute('quest');
$tquest['numb_answ'] = $node->get_attribute('numb_answ');
$answer = $node->children();
foreach($answer as $answ)
{
if (($answ->type==XML_ELEMENT_NODE))
{
$answers['tf']=$answ->get_attribute('tf');
$answers['ball']=$answ->get_attribute('ball');
$answers['tans'] = $answ->get_content();
$ans[]=$answers;
}
};
$qu[] = $tquest;
};
$tresult=array();
if ($node->tagname=='tresult')
{
$tresult['result']=$node->get_attribute('result');
$tresult['result_text']=$node->get_content();
$tres[]=$tresult;
}
};
print_r($qu); echo "<br><br><br>";
print_r($ans);echo "<br><br><br>";
print_r($tres);echo "<br><br><br>";
print_r($test);echo "<br><br><br>";
?>
как все видят кодировка оставляет желать лучшего А мне ведь с этими данными предстоит работать. Я думал что это не сыграет роли и пихнул все в mysql, как и предпологалось НО там обнаружил такиеже символы. + из-за своего синтаксиса некоторые выражения не позволяют себя удалить из бд стандартными путями(через пхпмайадмин).Р�нтегральная математика3Array ( [0] => Array ( [quest] => Что такое интеграл? [numb_answ] => 3 ) [skipped])
Количество ответов: 15 [very skipped]
первой приходит мысль сказать кодировку в самом XML документе, но когда я пишу там <?xml version="1.0" encoding="windows-1251" ?>, то сервер выдает мне в ответ Fatal error: Call to a member function on a non-object in z:\home\zaido1.net\www\test\xml.php on line 14
значит xml dom не привык работать с объявленной кодировкой
подскажите плз как быть, были ли у кого-то такиеже проблемы...