[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблемы с загрузкой XML
sergeiss
Не могу прочитать XML файл в ПХП, нужна помощь.

Файл имеет такую структуру (вообще он большой, только в архиве занимает 153 КБ, а в обычном виде 18 метров):

Код
<?xml version="1.0" encoding="UTF-8" ?>
<bulkCmConfigDataFile xmlns:es="EricssonSpecificAttributes.4.7.xsd" xmlns:un="utranNrm.xsd" xmlns:xn="genericNrm.xsd" xmlns:gn="geranNrm.xsd" xmlns="configData.xsd">
  <fileHeader fileFormatVersion="32.615 V4.5" vendorName="Ericsson" />
  <configData dnPrefix="Undefined">
    <xn:SubNetwork id="ONRM_ROOT_MO_R">
      <xn:SubNetwork id="RNC01NN">
        <xn:MeContext id="RNC01NN">
          <xn:VsDataContainer id="RNC01NN">
            <xn:attributes>
              <xn:vsDataType>vsDataMeContext</xn:vsDataType>
              <xn:vsDataFormatVersion>EricssonSpecificAttributes.4.7</xn:vsDataFormatVersion>
             <es:vsDataMeContext>
               <es:userLabel>RNC01NN</es:userLabel>
               <es:ipAddress>10.76.128.10</es:ipAddress>
               <es:neMIMversion>vG.5.30</es:neMIMversion>
               <es:bcrLastChange>1242721220361</es:bcrLastChange>
               <es:bctLastChange>1242646438529</es:bctLastChange>
            </es:vsDataMeContext>
         </xn:attributes>
      </xn:VsDataContainer>
       <xn:ManagedElement id="1">
         <xn:attributes>
           <xn:managedElementType>RNC</xn:managedElementType>

тут много-много всякой информации
.
.
.
.
.

</xn:ManagedElement>
 </xn:MeContext>
 </xn:SubNetwork>
 </xn:SubNetwork>
 </configData>
 <fileFooter dateTime="2009-05-19T15:41:31Z" />
 </bulkCmConfigDataFile>

Всякие разные функции ПХП, которые я использовал, показывают только 4 элемента: bulkCmConfigDataFile, fileHeader, configData и fileFooter. А любые элементы, в названии которых в начале находится xn:, es: и другая фигня, будто бы вообще отсутствуют.

В чем причина? Это нестандартный формат файла?

Я пробовал, например, SimpleXML. Взял пример из хэлпа. Но скрипт мне показал, что configData содержит 0 элементов. Собственно, вот весь код
PHP
$f='../Initial_files/Config3G/Config_190509.xml';
if (
file_exists($f)) 
{
    
$xml=new SimpleXMLElementfile_get_contents$f ) ); // это строка 45
 
} else 
{
    exit(
'Failed to open '.$f);
}

echo 
'<br><br><br>'.$xml->getName() . "<br>";

print_xml$xml'....' );

function 
print_xml$xml$str )
{
    foreach (
$xml->children() as $child)
    {
        echo 
$str.$child->getName() . '<br>';
        
print_xml$child$str.'....');
    }
    
}

В браузере получаю
Код
Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: Entity: line 4: parser warning : xmlns: URI configData.xsd is not absolute in C:\RMS_stat\Test\xml_load.php on line 45

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: xmlns:gn="geranNrm.xsd" xmlns="configData.xsd"> in C:\RMS_stat\Test\xml_load.php on line 45

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: ^ in C:\RMS_stat\Test\xml_load.php on line 45


bulkCmConfigDataFile
....fileHeader
....configData
....fileFooter


4-я строка файла с данными содержит
Код
xmlns:gn="geranNrm.xsd" xmlns="configData.xsd">


Кто-нибудь что-нибудь подскажет? Или мне не мучиться, и писать свой парсер под этот файл? Последнее не так уж и сложно, я думаю smile.gif



Спустя 21 час, 26 минут, 7 секунд (2.06.2009 - 09:11) sergeiss написал(а):
И что, "никОго нэмАэ"? ohmy.gif

Спустя 34 минуты, 16 секунд (2.06.2009 - 09:46) kirik написал(а):
sergeiss
пропробуй это:
Свернутый текст
PHP
$xml_src '
<bulkCmConfigDataFile xmlns:es="EricssonSpecificAttributes.4.7.xsd" xmlns:un="utranNrm.xsd" xmlns:xn="genericNrm.xsd" xmlns:gn="geranNrm.xsd" xmlns="configData.xsd">
  <fileHeader fileFormatVersion="32.615 V4.5" vendorName="Ericsson" />
  <configData dnPrefix="Undefined">
    <xn:SubNetwork id="ONRM_ROOT_MO_R">
      <xn:SubNetwork id="RNC01NN">
        <xn:MeContext id="RNC01NN">
          <xn:VsDataContainer id="RNC01NN">
            <xn:attributes>
              <xn:vsDataType>vsDataMeContext</xn:vsDataType>
              <xn:vsDataFormatVersion>EricssonSpecificAttributes.4.7</xn:vsDataFormatVersion>
             <es:vsDataMeContext>
               <es:userLabel>RNC01NN</es:userLabel>
               <es:ipAddress>10.76.128.10</es:ipAddress>
               <es:neMIMversion>vG.5.30</es:neMIMversion>
               <es:bcrLastChange>1242721220361</es:bcrLastChange>
               <es:bctLastChange>1242646438529</es:bctLastChange>
            </es:vsDataMeContext>
         </xn:attributes>
      </xn:VsDataContainer>
       <xn:ManagedElement id="1">
         <xn:attributes>
           <xn:managedElementType>RNC</xn:managedElementType> '
;

function 
start_element_handler($parser$name$attrs)
{
    global 
$stack$el_name;
    
$el_name $name;
    
$stack[$el_name]['attributes'] = $attrs;
}

function 
character_data_handler($parser$data)
{
    global 
$stack$el_name;
    
$stack[$el_name]['data'] = $data;
}

$el_name null;
$stack = array();
$xml_parser xml_parser_create();
xml_parser_set_option($xml_parserXML_OPTION_CASE_FOLDING0);
xml_set_element_handler($xml_parser'start_element_handler'null);
xml_set_character_data_handler($xml_parser'character_data_handler');
if(!(
$data xml_parse($xml_parser$xml_src)))
{
    exit(
'XML error: '.xml_error_string(xml_get_error_code($xml_parser)).' at line '.xml_get_current_line_number($xml_parser));
}
xml_parser_free($xml_parser);

print_r($stack);


набросал по-быстрому, но лучше это классом реализовать..

Спустя 35 минут, 42 секунды (2.06.2009 - 10:21) sergeiss написал(а):
kirik - спасибо, должен буду smile.gif

Всё работает, буду разбираться теперь, как же именно оно работает wink.gif И как работать с этими данными.

Я пробовал ранее через эти функции сделать, но, видимо, что-то недопонял.

Спустя 3 месяца, 6 дней, 4 часа, 4 минуты, 54 секунды (8.09.2009 - 14:26) Guest написал(а):
sergeiss
please send me this file EricssonSpecificAttributes.4.7.xsd

Спустя 50 секунд (8.09.2009 - 14:27) Guest написал(а):
sergeiss
please send me this file EricssonSpecificAttributes.4.7.xsd

pdaniel_marule@yahoo.co.uk


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.