2010-01-20 16 views
5

शाम के लोग।PHP नेमस्पेस सरल xml समस्या

सबसे पहले कहने के लिए, मैंने How do I parse XML containing custom namespaces using SimpleXML? पढ़ा है।

मैं किसी स्रोत से किसी XML दस्तावेज़ को पार्स नहीं कर रहा हूं, और वे एक कस्टम नेमस्पेस का उपयोग करते हैं।

<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0" xmlns:moshtix="http://www.moshtix.com.au"> 
    <channel> 
    <item> 
    <link>qweqwe</link> 
    <moshtix:genre>asdasd</moshtix:genre> 
... 

उदाहरण के लिए। जब मैं SimpleXML का उपयोग करके पार्स करता हूं, तो कोई भी अधिकांश नहीं: नामस्थान तत्व शो या पहुंच योग्य होते हैं। शायद वास्तव में एक सरल समाधान, लेकिन किसी भी विचार लोग?

उत्तर

6

आमतौर पर, लोग children() का उपयोग करते हैं।

$rss = simplexml_load_string(
    '<?xml version="1.0" encoding="utf-8"?> 
    <rss version="2.0" xmlns:moshtix="http://www.moshtix.com.au"> 
     <channel> 
      <link>qweqwe</link> 
      <moshtix:genre>asdasd</moshtix:genre> 
     </channel> 
    </rss>' 
); 

foreach ($rss->channel as $channel) 
{ 
    echo 'link: ', $channel->link, "\n"; 
    echo 'genre: ', $channel->children('moshtix', true)->genre, "\n"; 
} 
+0

कि निकालने के लिए काम करता है प्रत्येक तत्व है, जो उपयोगी है, काफी समय मैं एक json_encode करते हैं और केवल प्रत्येक व्यक्तिगत वैध आइटम बंडल और उन्हें एक डेटाबेस में संग्रहीत करने की आवश्यकता का एक बहुत। लेकिन जब मैं ऐसा करता हूं, तो यह कस्टम नेमस्पेस आइटम को नहीं पहचानता है। कोई विचार? प्रत्येक के अंदर डेटा प्रत्येक में मैन्युअल रूप से डालने के लिए बहुत भिन्न होता है। – James

+0

प्रत्येक तत्व के माध्यम से कुछ फ़ोरैच स्कैनिंग के साथ इसे ठीक करने के लिए प्रबंधित किया गया;) – James

+1

जब लोग कहते हैं कि वे संरचना के बारे में देखभाल किए बिना एक्सएमएल को जेएसओएन में परिवर्तित कर रहे हैं तो यह हमेशा मुझे थोड़ा चकित करता है। इसे एक्सएमएल के रूप में क्यों नहीं स्टोर करें? – IMSoP

संबंधित मुद्दे