2014-11-11 6 views
0

У меня возникла проблема с разбором XML.PHP Parsing XML

Что я делаю: Я раскошеливаю 1 XML для многих, а также редактирую несколько вещей для нового. И это работает!

Где проблема: После Синтаксический не все части такие же, чтобы быть более в некоторых, специфические из них только 2 труда Оценить подробности, в другой может быть 5 .:

Так выглядит как некоторые :

<LaborRateList> 
    <LaborRateDetail> 
    <Role>Labor</Role> 
    <Category>1</Category> 
    <Rate Cur="CZK" Unit="h" MinValue="0" MaxValue="0">250.0</Rate> 
    </LaborRateDetail> 
    <LaborRateDetail> 
    <Role>Paint</Role> 
    <Category>2</Category> 
    <Rate Cur="CZK" Unit="h" MinValue="0" MaxValue="0">350.0</Rate> 
    </LaborRateDetail> 
    </LaborRateList> 

И еще:

<LaborRateList> 
    <LaborRateDetail> 
    <Role>Labor</Role> 
    <Category>1</Category> 
    <Rate Cur="CZK" Unit="h" MinValue="0" MaxValue="0">250.0</Rate> 
    </LaborRateDetail> 
    <LaborRateDetail> 
    <Role>Labor</Role> 
    <Category>1</Category> 
    <Rate Cur="CZK" Unit="h" MinValue="0" MaxValue="0">250.0</Rate> 
    </LaborRateDetail> 
    <LaborRateDetail> 
    <Role>Labor</Role> 
    <Category>1</Category> 
    <Rate Cur="CZK" Unit="h" MinValue="0" MaxValue="0">250.0</Rate> 
    </LaborRateDetail> 
    <LaborRateDetail> 
    <Role>Labor</Role> 
    <Category>1</Category> 
    <Rate Cur="CZK" Unit="h" MinValue="0" MaxValue="0">250.0</Rate> 
    </LaborRateDetail> 
    <LaborRateDetail> 
    <Role>Paint</Role> 
    <Category>2</Category> 
    <Rate Cur="CZK" Unit="h" MinValue="0" MaxValue="0">350.0</Rate> 
    </LaborRateDetail> 
    </LaborRateList> 

я пытался выяснить, как ничего не вставлять, если больше нет ставок труда. Что я стараюсь было проверить, есть ли что-нибудь в variabile и если не писать ничего так что мой код выглядит следующим образом:

//RATE3 PART  
var_dump($value->Contract->LaborRateList->LaborRateDetail[2]->Role); 
    if ($value->Contract->LaborRateList->LaborRateDetail[2]->Role == 0) 
//SOME CODE HERE 

Но я получаю сообщение об ошибке:

Notice: Trying to get property of non-object in C:\xampp\htdocs\xampp\provisioning\index.php on line 23 
NULL 
Notice: Trying to get property of non-object in C:\xampp\htdocs\xampp\provisioning\index.php on line 24 

Мой полный код можно найти на http://pastebin.com/12HiHEcu, это моя последняя попытка, которая не работает :(

Может кто-нибудь помочь мне исправить это?

+0

Итак, как вы их разбираете? Вы не можете просто получить доступ к узлу XML в «нормальной» строке. Вам нужно будет использовать какую-то библиотеку для ее анализа. – HamZa

+0

EDITED и добавлен полный код – Andurit

+0

Это проще с DOM (из-за методов узлов), см. Http://stackoverflow.com/questions/26774674/split-1-xml-to-multiple-after-specific-tag- используя-PHP/26776687 # 26776687 – ThW

ответ

0

Если я правильно понимаю, вы могли бы используйте другой foreach, чтобы сделать это:

foreach($value->Contract->LaborRateList->LaborRateDetail as $laborRateDetails) { 
    //Do your stuff 
}