Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 517964

Парсер XML файла - PHP для начинающих

$
0
0
Здравствуйте, нужна помощь с парсингом XML-ки пример ниже. Необходимо достать следующие данные, из PMActivity значение атрибутов (id и name) из PMActivityProps значение PMBoxType , для дальнейшей записи в БД , но это уже отдельная тема :)
Код:

<PMActivity_Groups>
<PMActivity id="{BF2A4EB7-0A5D-438C-B344-1196B08AD4CB}+00000000" Name="Работа1">
<PMActivityProps>
<Name>Работа1</Name>
<PMDefinitionString/>
<PMStatusString>WORKING</PMStatusString>
<PMAuthor>Slavik</PMAuthor>
<PMNote/>
<PMSource/>
<PMDescriptionString/>
<PMFacts/>
<PMConstraintsString/>
<PMObjectsString/>
<PMTitleColorReference/>
<PMTextColorReference/>
<PMBackgroundColorReference/>
<PMBoxType>1</PMBoxType>
<PMFrequency>1</PMFrequency>
<PMDuration>0</PMDuration>
<PMOverrideCostsFlag>0</PMOverrideCostsFlag>
<PMParentActivityRef>0</PMParentActivityRef>
</PMActivityProps>
</PMActivity>
<PMActivity id="{CE13EA18-59DC-44B7-9CA8-D997D3B5A255}+00000000" Name="ПодРабота1.1">
<PMActivityProps>
<Name>ПодРабота1.1</Name>
<PMDefinitionString/>
<PMStatusString>WORKING</PMStatusString>
<PMAuthor>Slavik</PMAuthor>
<PMNote/>
<PMSource/>
<PMDescriptionString/>
<PMFacts/>
<PMConstraintsString/>
<PMObjectsString/>
<PMTitleColorReference/>
<PMTextColorReference/>
<PMBackgroundColorReference/>
<PMBoxType>1</PMBoxType>
<PMFrequency>1</PMFrequency>
<PMDuration>0</PMDuration>
<PMOverrideCostsFlag>0</PMOverrideCostsFlag>
<PMParentActivityRef>0</PMParentActivityRef>
</PMActivityProps>
</PMActivity>
<PMActivity id="{D4B24ABB-50B9-4124-B8C0-7AAE28298CFC}+00000000" Name="ПодРабота1.2">
<PMActivityProps>
<Name>ПодРабота1.2</Name>
<PMDefinitionString/>
<PMStatusString>WORKING</PMStatusString>
<PMAuthor>Slavik</PMAuthor>
<PMNote/>
<PMSource/>
<PMDescriptionString/>
<PMFacts/>
<PMConstraintsString/>
<PMObjectsString/>
<PMTitleColorReference/>
<PMTextColorReference/>
<PMBackgroundColorReference/>
<PMBoxType>1</PMBoxType>
<PMFrequency>1</PMFrequency>
<PMDuration>0</PMDuration>
<PMOverrideCostsFlag>0</PMOverrideCostsFlag>
<PMParentActivityRef>0</PMParentActivityRef>
</PMActivityProps>
</PMActivity>
<PMActivity id="{A381BC2C-F220-4BE6-9B76-2CA29FC1C4E0}+00000000" Name="ПодРабота1.2.1">
<PMActivityProps>
<Name>ПодРабота1.2.1</Name>
<PMDefinitionString/>
<PMStatusString>WORKING</PMStatusString>
<PMAuthor>Slavik</PMAuthor>
<PMNote/>
<PMSource/>
<PMDescriptionString/>
<PMFacts/>
<PMConstraintsString/>
<PMObjectsString/>
<PMTitleColorReference/>
<PMTextColorReference/>
<PMBackgroundColorReference/>
<PMBoxType>3</PMBoxType>
<PMFrequency>1</PMFrequency>
<PMDuration>0</PMDuration>
<PMOverrideCostsFlag>0</PMOverrideCostsFlag>
<PMParentActivityRef>0</PMParentActivityRef>
</PMActivityProps>
</PMActivity>
<PMActivity id="{CDCE3291-10B2-4E37-8389-D3C6D039A6D9}+00000000" Name="ПодРабота1.2.2">
<PMActivityProps>
<Name>ПодРабота1.2.2</Name>
<PMDefinitionString/>
<PMStatusString>WORKING</PMStatusString>
<PMAuthor>Slavik</PMAuthor>
<PMNote/>
<PMSource/>
<PMDescriptionString/>
<PMFacts/>
<PMConstraintsString/>
<PMObjectsString/>
<PMTitleColorReference/>
<PMTextColorReference/>
<PMBackgroundColorReference/>
<PMBoxType>3</PMBoxType>
<PMFrequency>1</PMFrequency>
<PMDuration>0</PMDuration>
<PMOverrideCostsFlag>0</PMOverrideCostsFlag>
<PMParentActivityRef>0</PMParentActivityRef>
</PMActivityProps>
</PMActivity>
</PMActivity_Groups>

Добавлено через 2 часа 16 минут
Пытаюсь извлечь информации из тегов
Код:

<Name></Name>
следующим образом, но он тащит по всему документу такие теги
Код:

$loadfile = new XMLReader();
        $loadfile->open('data/'.$_FILES['xmlFile']['name']);
       
        $filees = array();
        while ($loadfile->read()) {
                if ($loadfile->nodeType == XMLREADER::ELEMENT && $loadfile->localName == 'PMActivity_Groups') {
                        while ($loadfile->read()) {
                                if ($loadfile->nodeType == XMLREADER::ELEMENT && $loadfile->localName == 'PMActivity') {
                                        while ($loadfile->read()) {
                                                if ($loadfile->nodeType == XMLREADER::ELEMENT && $loadfile->localName == 'PMActivityProps'){
                                                        while ($loadfile->read()){
                                                                if (($loadfile->nodeType == XMLReader::ELEMENT) && ($loadfile->name == 'Name')){
                                                                        while ($loadfile->read()) {
                                                                            if ($loadfile->nodeType == XMLReader::TEXT) {
                                                                                $idx = 0;
                                                                                $xmlarr = array();
                                                                                $xmlarr[$idx]['PMActivityProps'][$loadfile->name] = $loadfile->value;
                                                                               
                                                                            print_r($xmlarr[$idx]['PMActivityProps'][$loadfile->name] = $loadfile->value);
                                                                            echo '<br>';
                                                                                }                                                                                                                                   
                                                                                elseif (($loadfile->nodeType == XMLReader::END_ELEMENT) && ($loadfile->name == 'Name')) {
                                                                break;
                                                                }
                                                                        }
                                                                }
                                                        }
                                                }               
                                                /*elseif (($loadfile->nodeType == XMLReader::END_ELEMENT) && ($loadfile->localName == 'PMActivityProps')) {
                                            break;
                                    }*/
                                }
                        }       
                }
        }


Viewing all articles
Browse latest Browse all 517964

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>