2016-01-19 2 views
9

मैं किसी XML फ़ीड मैं भेजा जा रहा है के साथ कुछ दु: ख हो रहा है स्वीकार करने के लिए पीएचपी हो रही है। मुझे पता है कि यह अमान्य है, लेकिन भेजने के कार्यक्रम का विकास चक्र ऐसा है कि त्रुटि को सही करने में सक्षम होने के लिए प्रतीक्षा करना उचित नहीं है। तो मैं इसके लिए एक काम की तलाश में हूं, PHP प्राप्त करने के लिए कुछ तरीका मुझे एक्सएमएल पढ़ने और अन्य सभी को रखने के दौरान अमान्य विशेषता प्रविष्टियों को मर्ज/ड्रॉप करने देता है।एक्सएमएल त्रुटियों

गलती मैं एक XML नोड पर डुप्लिकेट गुण है। मैं फ़ाइलों को पढ़ने और उन्हें एक उपयोगी मूल्यों में संसाधित करने के लिए simpleXML का उपयोग कर रहा हूं, लेकिन यह लाइन सिर्फ सिस्टम को पूरी तरह से तोड़ देती है। हमलावर एक्सएमएल इस

<dCategory dec="1102" dup="45" dup="4576" loc="274" mov="31493" prf="23469" unq="240031" xxx="7861" /> 

क्या मैं सच में चाहते हैं एक्सएमएल पाठक पर सी # के .MoveToNextAttribute() की पीएचपी बराबर है जैसा दिखता है। मुझे ऐसा कुछ भी प्रतीत नहीं होता है जो डुप्लिकेट विशेषता के साथ प्रस्तुत करते समय उड़ा नहीं जाता है।

कोई भी इस पर मदद?

जवाब एक्सएमएल के भीतर ही अक्षरों में त्रुटियों को सुधारने का जोड़ा। जैसे & & के रूप में दिखाई नहीं दे रहा। यहां समस्या यह है कि एक्सएमएल की संरचना टूट गई है, सामग्री नहीं। उस सूत्र में जवाब देता है

parser error : Attribute attr1 redefined 

जब एक्सएमएल

<open-1 attr1="atr1" attr1="atr1">Text</open-1> 

है कौन क्या मैं पार्स करने के लिए कोशिश कर रहा हूँ के साथ प्रस्तुत किया।

+0

आप [ 'XMLReader'] है (क्या http://php.net/manual/en /class.xmlreader.php) स्थापित? – summea

+0

हां मेरे पास है, हालांकि निश्चित रूप से इसे वैध एक्सएमएल की भी आवश्यकता होगी? – Khainestar

+2

[PHP - प्रसंस्करण अमान्य एक्सएमएल] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/2890120/php-processing-invalid-xml) – fruggiero

उत्तर

1

आप अपने इनपुट को साफ करने के साफ इस्तेमाल कर सकते हैं:

<?php 

$buffer = '<?xml version="1.0" encoding="UTF-8"?><open-1 attr1="atr1" attr1="atr1">Text</open-1>'; 

$config = [ 
'indent' => true, 
'output-xml' => true, 
'input-xml' => true, 
]; 

$tidy = tidy_parse_string($buffer, $config, 'UTF8'); 
$tidy->cleanRepair(); 
echo $tidy; 

विल उत्पादन:

<?xml version="1.0" encoding="utf-8"?> 
<open-1 attr1="atr1">Text</open-1>