16806


以下のようなXMLファイルとpythonのファイルで実行しようとしているのですが、エラーが発生しどうすればエラーが消えるのかわかりません。また、文字化けも起きているのですが対処方法はありますか。（UTF-8を使用している）

**エラーコード（実行結果）**

[code]

    C:\Users\g21125\python_xml_ex>python attribute-access.py
    パン
    縺ｮ辷ｶ隕ｪ縺ｯ
    C:\Python27\lib\xml\dom\minidom.py:693: UnicodeWarning: Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
      elif value != attr.value:
    謔滄｣ｯ
    
    C:\Users\g21125\python_xml_ex>
    
[/code]

**sample.xml**

[code]

    <?xml version="1.0" encoding="UTF-8"?>
    <recipe name="パン" preparations-time="5分" cokking-time="3時間">
        <dish>基本的なパン</dish>
        <material quantity='3' unit='カップ'>小麦粉</material>
        <material quantity='0.25' unit='オンス'>イースト</material>
        <material quantity='1.5' unit='カップ'>水</material>
        <material quantity='1' unit='ティースプーン'>食塩</material>
        <point>
            <process>全ての材料を一緒にして混ぜます。</process>
            <process>十分にこねます。</process>
            <process>布で覆い、暖かい部屋で1時間そのままにしておきます。</process>
            <process>もう一度こねます。</process>
            <process>パン焼きの容器に入れます。</process>
            <process>布で覆い、暖かい部屋で1時間そのままにしておきます。</process>
            <process>オーブンに入れて温度を180℃にして30分間焼きます。</process>
        </point>
    </recipe>
    
[/code]

**attribute-access.py**

[code]

    # coding: utf-8
    # タグの属性にアクセス
    
    from xml.dom import minidom
    
    # sample.xmlファイルを読み込む
    xdoc = minidom.parse("sample.xml")
    
    # recipe タグの0番目の要素を取得
    recipe_element = xdoc.getElementsByTagName("recipe")[0]
    
    # name 属性を取得して表示
    print(recipe_element.getAttribute("name"))
    
    print("の父親は")
    
    # name 属性を変更
    recipe_element.setAttribute("name", "悟飯")
    
    # 再度 name 属性を表示
    print(recipe_element.getAttribute("name"))
    
[/code]

**実行結果(正常終了の場合)**

[code]

    パン
    の父親は
    悟飯
    
[/code]


CC BY-SA 3.0
2015-09-20T15:55:01.557
16804
2015-09-20T17:17:28.487
2015-09-20T17:17:28.487
9505
question
python xml
pythonでXMLを操作でのエラーが発生と文字化け①


あまり状況が分からないのですが。Python
2.xを使っていて、ソースコードがUTF-8で書かれていて、Windowsの通常のコマンドプロンプト上で実行しているとすれば、コマンドプロンプトがUTF-8を表示できないから文字化けしているのでは？

print("の父親は") → print(u"の父親は")

recipe_element.setAttribute("name", "悟飯")
も、unicode文字列に変えるとエラーが消えるかもしれません(別のエラーが出るかもしれません。そのときはすみません)  
recipe_element.setAttribute("name", u"悟飯")

参考: <http://d.hatena.ne.jp/nullpobug/20110706/1309934555>


CC BY-SA 3.0
2015-09-20T16:26:48.993
16806
2015-09-20T16:26:48.993
12269
16804
answer