前提・実現したいこと
以下のXMLに含まれる「text」タグの中身をそのまま抜き出して変数に取得したいのですが、中身を取得したらXML上の文字列とは似つかない文字列に勝手に差し変わってしまいます。
「text」タグの中身をそのまま取得したいです。
xml
1<pages> 2 <page> 3 <title>アンパサンド</title> 4 <ns>0</ns> 5 <id>5</id> 6 <revision> 7 <id>73841108</id> 8 <parentid>73290874</parentid> 9 <timestamp>2019-08-14T00:23:07Z</timestamp> 10 <contributor> 11 <username>Ttle-recll</username> 12 <id>1525028</id> 13 </contributor> 14 <comment>/* 手書き */</comment> 15 <model>wikitext</model> 16 <format>text/x-wiki</format> 17 <text xml:space="preserve">{{Redirect|&}} 18{{Otheruses|記号|競走馬|アンパサンド (競走馬)}} 19{{WikipediaPage|「アンパサンド (&)」の使用|WP:JPE#具体例による説明}} 20{{記号文字|&amp;}} 21{{複数の問題|出典の明記=2018年10月8日 (月) 14:50 (UTC)|独自研究=2018年10月8日 (月) 14:50 (UTC)}} 22[[Image:Trebuchet MS ampersand.svg|right|thumb|100px|[[Trebuchet MS]] フォント]] 23'''アンパサンド''' ('''&amp;'''、英語名:{{lang|en|ampersand}}) とは並立助詞「…と…」を意味する[[記号]]である。[[ラテン語]]の {{lang|la|"et"}} の[[合字]]で、[[Trebuchet MS]]フォントでは、[[ファイル:Trebuchet MS ampersand.svg|10px]]と表示され "et" の合字であることが容易にわかる。ampersa、すなわち "and per se and"、その意味は"and [the symbol which] by itself [is] and"である。 24 25== 歴史 == 26[[Image:Historical ampersand evolution.svg|thumb|right|390px|アンパサンドの進展]] 27その使用は1世紀に遡ることができ、5世紀中葉から現代に至るまでの変遷がわかる。 28[[Z]] に続く[[ラテン文字]][[アルファベット]]の27字目とされた時期もある。 29 30アンパサンドと同じ役割を果たす文字に「{{仮リンク|ティロ式記号|en|Tironian notes}}のet」と呼ばれる、数字の「7」に似た記号があった({{unicode|⁊}}, U+204A)。この記号は現在も[[ゲール文字]]で使われている。 31 32記号名の「アンパサンド」は、ラテン語まじりの英語「&amp; はそれ自身 "and" を表す」(&amp; per se and) のくずれた形である。英語以外の言語での名称は多様である。 33 34==手書き== 35[[File:Ampersand-handwriting-1.png|right|thumb|80px|手書きのアンパサンド]][[Image:Ampersand-handwriting-2.svg|right|thumb|80px|手書きのアンパサンド(簡素化)]] 36日常的な手書きの場合、[[欧米]]でアンパサンドは「'''ε'''」に縦線を引く単純化されたものが使われることがある。 37 38また同様に、「'''t'''」または「'''+'''(プラス)」に輪を重ねたような、[[無声歯茎側面摩擦音]]を示す[[発音記号]]「'''{{IPA|ɬ}}'''」のようなものが使われることもある。 39 40== プログラミング言語 == 41[[プログラミング言語]]では、[[C言語|C]] など多数の言語で AND [[演算子]]として用いられる。以下は C の例。 42* <code>X = A '''&amp;&amp;''' B</code> のように2個重ねたものは[[論理積|論理 AND]] を表す。この場合 A, B がともに真ならば X も真、それ以外は偽である。 43* <code>0x12345678 '''&amp;''' 0x0f0f0f0f</code> のように1個であれば[[ビット演算#AND|ビット AND]] を表す。この場合の結果は <code>0x02040608</code> である。 44[[PHP (プログラミング言語)|PHP]]では、変数宣言記号($)の直前に記述することで、[[参照渡し]]を行うことができる。 45 46[[BASIC]] 系列の言語では[[文字列]]の連結演算子として使用される。<code>"foo" '''&amp;''' "bar"</code> は <code>"foobar"</code> を返す。また、主に[[マイクロソフト]]系では整数の[[十六進法|十六進表記]]に '''<code>&amp;h</code>''' を用い、<code>&amp;h0F</code> (十進で15)のように表現する。 47 48[[Standard Generalized Markup Language|SGML]]、[[Extensible Markup Language|XML]]、[[HyperText Markup Language|HTML]]では、アンパサンドを使って[[SGML実体]]を参照する。 49 50== 符号位置 == 51{| class="wikitable" style="text-align:center;" 52!記号!![[Unicode]]!![[JIS X 0213]]!![[文字参照]]!!名称 53{{CharCode|38|0026|1-1-85|アンパサンド|amp}} 54{{CharCode|65286|ff06|1-1-85|アンパサンド(全角)}} 55|} 56 57== 外部リンク == 58{{Commons|Ampersand}} 59<!-- 60== 脚注 == 61{{Reflist}} 62--> 63{{punctuation marks|&amp;}} 64{{DEFAULTSORT:あんはさんと}} 65[[Category:約物]] 66[[Category:ラテン語の語句]] 67[[Category:論理記号]]</text> 68 <sha1>kouc3jdgpxhfmpwjyzz53t9vo6s5rwq</sha1> 69 </revision> 70 </page> 71 <page> 72 <title>Wikipedia:Sandbox</title> 73 <ns>4</ns> 74 <id>6</id> 75 <redirect title="Wikipedia:サンドボックス" /> 76 <revision> 77 <id>70473293</id> 78 <parentid>70473279</parentid> 79 <timestamp>2018-10-31T16:40:16Z</timestamp> 80 <contributor> 81 <username>Y-dash</username> 82 <id>309126</id> 83 </contributor> 84 <minor /> 85 <comment>「[[Wikipedia:Sandbox]]」を保護しました: 編集不要のページ, 場所間違えの防止 ([編集=自動承認された利用者のみ許可] (無期限) [移動=自動承認された利用者のみ許可] (無期限))</comment> 86 <model>wikitext</model> 87 <format>text/x-wiki</format> 88 <text xml:space="preserve">#REDIRECT [[Wikipedia:サンドボックス]]</text> 89 <sha1>8x10n6namf7oawlowe0whbs04o55b8d</sha1> 90 </revision> 91 </page> 92</pages>
発生している問題
「text」タグの中身を取得すると、取得結果の中身がなぜか以下の内容になります。
#REDIRECT [[Wikipedia:サンドボックス]]
該当のソースコード
Python
1from xml.etree.ElementTree import iterparse 2 3input_path = './target.xml' 4 5context = iterparse(input_path, events=['start', 'end']) 6_, root = next(context) 7 8for (event, node) in context: 9 10 if event == 'start': 11 12 text = node.text 13 if text is None: 14 continue 15 16 if node.tag == 'title' or re.search('}title$', node.tag): 17 # 略 18 19 elif node.tag == 'text' or re.search('}text$', node.tag): 20 print(text) 21 # 略 22 23 else: 24 print(node.tag) 25 26 # 略
試したこと
同じソース内で取得している「title」タグの方は、中身を問題なく取得できています。
補足情報(FW/ツールのバージョンなど)
Pythonのバージョンは3.6.9で、実行環境はUbuntu18.04です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/12 13:24