Здравствуйте, нужна помощь с парсингом XML-ки пример ниже. Необходимо достать следующие данные, из PMActivity значение атрибутов (id и name) из PMActivityProps значение PMBoxType , для дальнейшей записи в БД , но это уже отдельная тема :)
Добавлено через 2 часа 16 минут
Пытаюсь извлечь информации из тегов
следующим образом, но он тащит по всему документу такие теги
Код:
<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>
Пытаюсь извлечь информации из тегов
Код:
<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;
}*/
}
}
}
}