3

Python で minidom を使用して属性を取得するには、「attributes」プロパティを使用します。例えばnode.attributes["id"].value

だから私が持って<a id="foo"></a>いるなら、それは私に与えるはずです"foo"node.attributes["id"]指定された属性の値ではなく、xml.dom.minidom.Attrインスタンスを返します。しかし、のヘルプを見ると、この魔法のプロパティはどこにも言及さAttrれていません。型階層、インスタンス メソッドなどを調べて API を学習するのが好きです。このプロパティはどこから来たのですか?? クラスのページにリストされていないのはなぜですか? 言及されている唯一のデータ記述子は、およびです。また、どのスーパークラスからも継承されません。私は Python を初めて使用するので、Python の専門家が教えてくれますか?help('xml.dom.minidom.Attr')"value""value"AttrisIdlocalNameschemaType

4

2 に答える 2

4

はインターフェイスの実装minidomすぎないため、特に minidom に関するドキュメントは、それ自体の特性または制限についてのみ説明します。xml.domxml.dom

Attrxml.domドキュメントには、次のように記載されています。

Attr は Node から継承するため、すべての属性を継承します。

Nodeのドキュメントでは、実際には属性の名前が異なります: nodeValue. しかし、確かに...:

>>> import xml.dom.minidom as xdm
>>> dom = xdm.parseString('<foo bar="baz"/>')
>>> root = dom.documentElement
>>> atr = root.getAttributeNode('bar')
>>> atr.nodeValue
u'baz'

文書化されたnodeValue属性が _un_documented エイリアスを持っているという事実valueは不幸なことだと思われるかもしれませんが、文書化された、したがってほぼ間違いなく正しい、属性名をいつでも固執することができますnodeValue。はい、それは冗長ですが、優れた xml.etree.ElementTree (特に後者の C 実装では ) よりも遅いだけでなく、すべて同様ですminidom。...;-)。xml.etree.cElementTreeminidom

于 2010-05-07T02:25:26.903 に答える
0

ねえ、今まで気づかなかった。あなたは冗談でnode.valueはありません、どこにも言及されていません。def __setitem__xml.dom.minidomの下では間​​違いなくコードに設定されています。

それ以外に何を言うべきかわかりません。それを使用する必要があるようです。

于 2010-05-07T02:00:39.497 に答える