जिस कंपनी के लिए मैं काम करता हूं उसके पास उत्पादन TAXII सर्वर (STIX 1.1.1 का उपयोग करके) है जो हमारे कुछ क्लाइंट के क्लाइंट TAXII कार्यान्वयन के साथ काफी काम नहीं कर रहा है, इसलिए मैं कुछ बग्स को दूर करने का प्रयास करने के लिए एक परीक्षण सर्वर विकसित कर रहा हूं . इसके लिए, मैं दोनों कैबी का उपयोग करके हमारे TAXII सर्वर से जानकारी खींच रहा हूं, या सीधे हमारे (गैर-TAXII) API से STIX/XML फ़ाइलों को खींच रहा हूं और उन्हें सीधे परीक्षण सर्वर बैकएंड में स्लॉट कर रहा हूं। उत्पादन और परीक्षण TAXII सर्वर दोनों पर कैबी का उपयोग करते समय मैं जिन मुद्दों पर चल रहा हूं उनमें से एक पाइथन एलएक्सएमएल लाइब्रेरी में यह त्रुटि है, जो कैबी की निर्भरता है (यह सिर्फ एक बड़े स्टैक ट्रेस के नीचे है)

taxii_xml = response_message.to_xml(pretty_print=True)
  File "/usr/local/lib/python3.6/dist-packages/libtaxii/common.py", line 239, in to_xml
    return etree.tostring(self.to_etree(), pretty_print=pretty_print)
  File "src/lxml/etree.pyx", line 3435, in lxml.etree.tostring
  File "src/lxml/serializer.pxi", line 139, in lxml.etree._tostring
  File "src/lxml/serializer.pxi", line 199, in lxml.etree._raiseSerialisationError
lxml.etree.SerialisationError: IO_ENCODER

मैं यह पता लगाने की कोशिश कर रहा हूं कि एक्सएमएल में क्या त्रुटि हो रही है लेकिन मुझे बहुत सफलता नहीं मिल रही है। एक्सएमएल से संभावित रूप से आपत्तिजनक पात्रों को फ़िल्टर करने का प्रयास आंशिक रूप से सफल रहा है, लेकिन मुझे यह भी यकीन नहीं है कि इस समस्या का कारण क्या है। क्या किसी के पास एलएक्सएमएल में वास्तव में इस त्रुटि का कारण बनने के लिए एक अच्छी व्याख्या है, मुझे लगता है कि इसका एक्सएमएल स्वरूपण के साथ कुछ लेना-देना है, लेकिन यह पता लगाना कि खराब स्वरूपण के कारण क्या हैं, यह बेहद मददगार होगा

2
jfeldzy 24 फरवरी 2020, 21:33

3 जवाब

संभवतः lxml 4.4.2 में पेश किए गए lxml बग के कारण, https://bugs देखें। launchpad.net/lxml/+bug/1873306

2
Peter Larsson 23 अप्रैल 2020, 14:59

क्या आपने अपने सिस्टम को किसी नए सिस्टम में माइग्रेट किया है?

हमारे मामले में एक पुराने सिस्टम में lxml 4.5 के साथ यह त्रुटि है।

इसे वापस 2.3 की ओर ले जाने से त्रुटि हल हो गई:

sudo su
pip uninstall lxml
apt-get install libxml2-dev libxslt1-dev
pip install lxml==2.3
1
goodhyun 22 अप्रैल 2020, 08:29

अपने tostring कॉल में सही एन्कोडिंग पास करना ज्यादातर मामलों में इसे ठीक करता है:

import lxml.etree as ET

root = ET.parse('some_file.xml')
outstr = ET.tostring(root, encoding='UTF-8', pretty_print=True).decode()

एन्कोडिंग = 'यूटीएफ -8' पैरामीटर के बिना मुझे SerialisationError IO_ENCODER मिलता है। जब मैंने परिणाम पर अतिरिक्त एन्कोडिंग पैरामीटर और डीकोड() जोड़ा, तो वे सभी गायब हो गए।

4 से कम के संस्करण में अपग्रेड करना थोड़ा अधिक लगता है, साथ ही संस्करण <4 नवीनतम macOS पर भी संकलित नहीं होते हैं।

1
Walter Schreppers 21 जून 2021, 10:26