2016-10-06 3 views
-1

WindowsのフレームワークでPython V 3.5.1を使用していますが、内部のテキストを変更するには変更が有効ですが、ツリーを保存した後、 :タグの間のテキストとElementTreeで修正されたPython XMLでXML構造が破棄される

<HOSTNAME></HOSTNAME> Is being changed to <HOSTNAME /> 

子供がよさそうだ:

<HOSTNAME>tnas2</HOSTNAME> is being changed to 
<HOSTNAME>tnas2</HOSTNAME> which is the same as the source. 

ソースXMLファイルは、次のとおりです。

<ROOT> 

    <DeletedName> 

     <VERIFY_DEST_SIZE>Y</VERIFY_DEST_SIZE> 

     <VERIFY_BYTES>Y</VERIFY_BYTES> 

     <TIMESTAMP>XXXXXXXXXDeletedXXXXXXXXXX</TIMESTAMP> 

     <EM_USERS>XXXXXXXXXDeletedXXXXXXXXXX</EM_USERS> 

     <EM_GROUPS></EM_GROUPS> 

     <LOCAL> 

      <HOSTNAME></HOSTNAME> 

      <PORT></PORT> 

      <USERNAME>XXXXXXXXXDeletedXXXXXXXXXX</USERNAME> 

      <PASSWORD>XXXXXXXXXDeletedXXXXXXXXXX</PASSWORD> 

      <HOME_DIR></HOME_DIR> 

      <OS_TYPE>Windows</OS_TYPE> 

     </LOCAL> 

     <REMOTE> 

      <HOSTNAME>DeletedHostName</HOSTNAME> 

      <PORT>22</PORT> 

      <USERNAME>XXXXXXXXXDeletedXXXXXXXXXX</USERNAME> 

      <PASSWORD>XXXXXXXXXDeletedXXXXXXXXXX</PASSWORD> 

      <HOME_DIR>XXXXXXXXXDeletedXXXXXXXXXX</HOME_DIR> 

      <OS_TYPE>Unix</OS_TYPE> 

      <CHAR_SET>UTF-8</CHAR_SET> 

      <SFTP>Y</SFTP> 

      <ENCRYPTION>Blowfish</ENCRYPTION> 

      <COMPRESSION>N</COMPRESSION> 

     </REMOTE> 

    </DeletedName> 

</ROOT> 

コードは次のとおりです。

import os 
import xml.etree.ElementTree as ET 
from shutil import copyfile 
import datetime 

def AddAuthUserToAccountsFile(AccountsFile,RemoteMachine,UserToAdd): 
    today = datetime.date.today() 
    today = str(today) 
    print(today) 
    BackUpAccountsFile = AccountsFile + "-" + today 
    try: 
     tree = ET.parse(AccountsFile) 
    except: 
     pass 
    try: 
     copyfile(AccountsFile,BackUpAccountsFile) 
    except: 
     pass 
    root = tree.getroot() 
    UsersTags = tree.findall('.//EM_USERS') 
    for UsersList in UsersTags: 
     Users = UsersList.text 
     Users = UsersList.text = Users.replace("||","|") 
     if UserToAdd not in Users: 
      print("The Users were : ",Users, "--->> Adding ",UserToAdd) 
      UsersList.text = Users + UserToAdd +"|" 
    tree.write(AccountsFile) 

はこの奇妙なシナリオを渡す任意の助けのために感謝しています。

おかげで、 三木

+0

'は' YES '' – e4c5

+0

と全く同じであるが、私のアプリケーションがそれを読むことができない、それはタグの内側に見えます。 –

+0

それでは、アプリケーションを書くときに大きな間違いを犯しました。 – e4c5

答えて

0

OK、私は解決策を見つけた - だけで、必要に応じてそれを保持tree.writeラインにメソッド= "HTML" を追加します。

tree.write(AccountsFile,method = 'html') 

ありがとう。それはそれを読むことができませんが開いていないタグと終了タグので、もし

関連する問題