PHP SimpleXML with XPath -
मेरे पास XML संरचना है जो इस तरह दिखता है:
& lt;? Xml संस्करण = ? "1.0" & gt; & LT; सर्वेक्षण & gt; & LT; प्रतिक्रियाओं & gt; 0 & lt; / प्रतिक्रियाओं & gt; & LT; सवाल & gt; & Lt; title & gt; कुछ सर्वेक्षण प्रश्न & lt; / title & gt; & LT; जवाब & gt; & Lt; शीर्षक & gt; उत्तर 1 & lt; / शीर्षक & gt; & LT; प्रतिक्रियाओं & gt; 0 & lt; / प्रतिक्रियाओं & gt; & Lt; / जवाब & gt; & LT; जवाब & gt; & Lt; शीर्षक & gt; उत्तर 2 & lt; / शीर्षक & gt; & LT; प्रतिक्रियाओं & gt; 0 & lt; / प्रतिक्रियाओं & gt; & Lt; / जवाब & gt; ... & lt; / प्रश्न & gt; ... & lt; / सर्वेक्षण & gt;
मैं $ response
सरणी में मानों से मेल खाने वाले उत्तरों के लिए & lt; responses & gt;
मान को बढ़ाना चाहता हूं I यहां बताया गया है कि $ response
एरे संरचित है:
$ response = array ('sid' = & gt; session_id (), 'answers' = & gt; सरणी ($ _POST ['input1'], $ _POST ['input2'], ...));
मेरे सर्वेक्षण xml फ़ाइल के लिए मुझे $ परिणाम
नामक एक सरल एक्सएमलेमेंट है। यहां बताया गया है कि कैसे मैं इसके बारे में जा रहा हूं:
$ परिणाम = सरल xml_load_file ($ surveyResultsFile); $ I = 1; विदेशी मुद्रा ($ प्रतिक्रिया-> $ उत्तर के रूप में उत्तर) {$ r = $ results- & gt; xpath ("प्रश्न [$ i] / उत्तर [शीर्षक = '$ answer'] / प्रतिक्रियाएं); $ R = $ r [0]; $ R = अंतराल ($ r) + 1; $ I ++; } File_put_contents ($ surveyResultsFile, $ परिणाम- & gt; asXML ());
मेरे परिणाम $ r
के मूल्य में वृद्धि के बाद सहेजे नहीं जा रहे हैं क्या मैं गलत कर रहा हूँ पर कोई विचार? धन्यवाद!
आपकी स्क्रिप्ट में कई त्रुटियां हैं, जो बताती हैं कि यह काम क्यों नहीं करता। सबसे पहले, आपका $ प्रतिक्रिया
सरणी सही नहीं लगता क्या आप वास्तव में चाबियाँ के स्थान पर चर का उपयोग करना चाहते हैं? print_r ($ response);
आज़माएं और देखें कि वास्तव में आप क्या चाहते हैं।
आप nth & lt; प्रश्न / & gt;
का चयन कर सकते हैं सरणी संकेतन (0-आधारित) के रूप में
$ परिणाम- & gt; प्रश्न [$ i]
एक बार जब आप सही प्रश्न प्राप्त करते हैं, तो आपको सभी की आवश्यकता होती है करने के लिए यह सत्यापित करता है कि यह वास्तव में XPath के साथ सुझाए गए उत्तर शामिल है। फिर केवल, आप & lt; प्रतिक्रियाओं / & gt;
के मान कर सकते हैं। इसके अलावा, आपको विशेष अक्षर जैसे कि और
"
से बचना होगा, जो आपकी XPath क्वेरी को असफल कर देगा।
अंत में, आप < कोड> एएसएक्सएमएल () वास्तव में फ़ाइल को सहेजने के लिए (कोई file_put_contents ()
यहां की आवश्यकता नहीं है।) मुझे लगता है कि आपका $ surveyResults
एक टाइपो है और इसका मतलब है कि $ surveyResultsFile
।
$ response = array ('sid' = & gt; session_id (), 'जवाब' = & gt; सरणी ($ _POST ['input1'] )); $ परिणाम = simplexml_load_file ($ surveyResultsFile); $ जवाब) {$ title = htmlspecialchars ($ जवाब), $ एक = $ परिणामों & gt; प्रश्न [foreach ($ प्रतिक्रिया $ i = & gt के रूप में [ 'जवाब'] $ I] - & gt; xpath ('उत्तर [शीर्षक =' '। $ शीर्षक।' "] '); यदि (खाली ($ a)) {गूंजती" प्रश्न $ i \ n "के लिए" कोई जवाब नहीं' $ शीर्षक '; जारी रखें;} ++ $ a [0] - & gt; प्रतिक्रियाएं;} $ परिणाम- & gt; asXML ($ surveyResultsFile);
Comments
Post a Comment