2012-10-09 9 views
-1

Observer 패턴을 사용하기 위해 작은 이벤트 관리자를 구현하고 있습니다.SimpleXML (실제로 Zend_Config_Xml) 및 foreach : 어떤 태그를 반복합니까?

<?xml version="1.0" encoding="UTF-8"?> 
<configData> 
    <subscriptions> 
     <subscription> 
      <eventName>event_name</eventName> 
      <class>My_Observer_Class</class> 
      <function>myFunction</function> 
     </subscription> 
     <subscription> 
      <eventName>other_event_name</eventName> 
      <class>My_Observer_Otherclass</class> 
      <function>myOtherFunction</function> 
     </subscription> 
    </subscriptions> 
</configData> 

내가 구독에 루프에 foreach을 사용하고 있습니다 : 내 이벤트 내 관찰자를 구독하려면, 나는 다음과 같은 XML 파일을 사용하고

foreach($subscriptions->subscription as $subscription) { 
    /* using $subscription->eventName etc... */ 
} 

을 그리고 모든 각 $subscription 괜찮습니다

<?xml version="1.0" encoding="UTF-8"?> 
<configData> 
    <subscriptions> 
     <subscription> 
      <eventName>event_name</eventName> 
      <class>My_Observer_Class</class> 
      <function>myFunction</function> 
     </subscription> 
    </subscriptions> 
</configData> 
: 항목은 내 문제를 ... 그것은 eventName 등의

이있다 그러나 여기 온다 0

여기에서 나는 하나만<subscription> 노드가 있습니다. 그리고 내 foreach 루프에 subscription어린이! 는 ... 내가 xml 파일이 <subscription> 여러 태그 또는 하나가 포함 된 경우 내가 확인할 수있는 방법을 알고 싶습니다,이 문제를 해결하려면

어떤 도움을 이해할 수있을 것이다 :

편집 :Zend_Config_Xml objectxpath을 (를) 사용하는 방법이 있습니까?

답변

0

명확히하기 위해, 이것은 PHP의 기본 SimpleXML에없는 Zend_Config_XML의 문제입니다. 나는이 설정을로드 Zend_Config_Xml을 사용하고 실제로

$configData = simplexml_load_string($xml); 
foreach($configData->subscriptions->subscription as $subscription) 
{ 
    echo $subscription->getName(); 
} 
+0

사실 이것은 내가 한 일입니다. 나는 xpath를 사용하지 않았다. 감사. – LittleBigDev

1

Xpath을 사용할 수 있습니다.

다음 코드를 시도해보십시오. 제공 한 샘플 XML 두 가지를 모두 테스트했습니다.

희망이 도움이됩니다.

+0

:

내가 다음을 실행하고 단어 예상대로 '구독'을 얻을 수 $xml로 두 번째 예제를 감안할 때'$ managerConfig = 새로운 Zend_Config_Xml (APPLICATION_PATH. '/ configs/eventManager.xml');'...이 클래스는 네이티브'xpath' 함수를 가지고 있지 않습니다 : ( – LittleBigDev

+0

이것을 확인해보십시오 : http://stackoverflow.com/questions/3576995/iterating -zend-config-xml-with-only-child-node & http://stackoverflow.com/questions/5415651/zend-config-xml-strange-behaviour Zend_Config_Xml 대신 SimpleXML을 사용할 수 있다고 생각합니다. –

+0

예 I 마지막으로'Zend_Config_Xml'을'SimpleXML'으로 변경했습니다. nce'Zend_Config' 함수가 필요 없습니다. 고마워. – LittleBigDev