क्यों xml पैकेज Python3 में मेरी xml फ़ाइल को संशोधित करता है?



python-3.x elementtree (1)

ध्यान दें कि "xml पैकेज" और " xml लाइब्रेरी" अस्पष्ट हैं। मानक पुस्तकालय में कई XML- संबंधित मॉड्यूल हैं: https://docs.python.org/3/library/xml.html

इसे क्यों संशोधित किया गया है?

एलीमेंटट्री ने नेमस्पेस घोषणाओं को रूट एलिमेंट में ले जाता है, और ऐसे नेमस्पेस जो वास्तव में डॉक्यूमेंट में उपयोग नहीं किए जाते हैं हटा दिए जाते हैं।

ElementTree ऐसा क्यों करता है? मुझे नहीं पता, लेकिन शायद यह कार्यान्वयन को सरल बनाने का एक तरीका है।

मेरे द्वारा इसे कैसे रोका जा सकता है? उदाहरण के लिए, मैं केवल विशिष्ट टैग को बदलना चाहता हूं या किसी अन्य informations को खोए बिना काफी जटिल xml- फाइल में इसका मूल्य है।

मुझे नहीं लगता कि इससे बचाव का कोई तरीका है। मुद्दा पहले भी लाया जा चुका है। यहाँ कोई जवाब नहीं के साथ दो बहुत ही समान प्रश्न हैं:

  • मैं आसपास के नामस्थानों को स्थानांतरित किए बिना पायथन के एलिमेंटट्री का उपयोग करके XML को कैसे पार्स और लिख सकता हूं?
  • एलीमेंटट्री और पायथन के साथ एक्सएमएल फाइल को ओवरराइट करते समय मौजूदा नामस्थान रखें

मेरा सुझाव एलिमेंट्री के बजाय lxml का उपयोग करना है। एलएक्सएमएल के साथ, नाम स्थान की घोषणाएं वहीं रहेंगी जहां वे मूल फ़ाइल में होते हैं।

लाइन 1 चला गया है।

वह लाइन XML घोषणा है। यह अनुशंसा की जाती है लेकिन एक होना अनिवार्य नहीं है।

यदि आप हमेशा एक्सएमएल घोषणा चाहते हैं, तो xml_declaration=True इन write() विधि कॉल का उपयोग करें।

मैं एक xml फ़ाइल पढ़ने और लिखने के लिए Python3.5 में xml लाइब्रेरी का उपयोग करता हूं। मैं फ़ाइल को संशोधित नहीं करता। बस खोलो और लिखो। लेकिन लाइब्रेरी फ़ाइल को संशोधित करती है।

  1. इसे क्यों संशोधित किया गया है?
  2. मेरे द्वारा इसे कैसे रोका जा सकता है? उदाहरण के लिए, मैं केवल विशिष्ट टैग को बदलना चाहता हूं या किसी अन्य informations को खोए बिना काफी जटिल xml- फाइल में इसका मूल्य है।

यह उदाहरण फ़ाइल है

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<movie>
    <title>Der Eisbär</title>
    <ids>
        <entry>
            <key>tmdb</key>
            <value xsi:type="xs:int" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">9321</value>
        </entry>
        <entry>
            <key>imdb</key>
            <value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">tt0167132</value>
        </entry>
    </ids>
</movie>

यह कोड है

import xml.etree.ElementTree as ET
tree = ET.parse('x.nfo')
tree.write('y.nfo', encoding='utf-8')

और xml-file यह बन जाती है

<movie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <title>Der Eisbär</title>
    <ids>
        <entry>
            <key>tmdb</key>
            <value xsi:type="xs:int">9321</value>
        </entry>
        <entry>
            <key>imdb</key>
            <value xsi:type="xs:string">tt0167132</value>
        </entry>
    </ids>
</movie>
  • लाइन 1 चला गया है।
  • लाइन 2 में <movie> -टैग में अब विशेषताएँ हैं।
  • <value> -tag 7 और 11 में अब कम विशेषताएँ हैं।




elementtree