2010-06-10 13 views

Répondre

7

Vous pouvez récupérer la valeur particulière de l'attribut en utilisant la fonction,

QString QDomElement::attribute (const QString & name, const QString & defValue = QString()) const 

Pour obtenir tous les attributs utilisent,

QDomNamedNodeMap QDomElement::attributes() const 

et vous devez traverser à travers le DomNamedNodeMap et obtenir la valeur de chacun des attributs. J'espère que cela aide.

Modifier: Essayez celui-ci.

Avec le QDomNamedNodeMap vous avez donner,

QDomNode QDomNamedNodeMap::item (int index) const 

qui retournera un QDomNode pour l'attribut particulier. Ensuite, donnez,

QDomAttr QDomNode::toAttr() const 

Avec le QDomAttr obtenu donne,

QString name() const 

qui renvoie le nom de l'attribut. J'espère que ça aide.

+0

il renvoie un DomNamedNodeMap et je ne pouvais pas voir comment il peut m'aider à récupérer les chaînes ("Name") et ("ID"), je ne veux pas les valeurs de ces attributs. Je veux juste le nom de l'attribut. –

0

Ceci est pour C++. J'ai rencontré le même problème. Vous devez convertir en QDomAttr. Je suis sûr que l'API est la même en python.

if(Node.hasAttributes()) 
{ 
    QDomNamedNodeMap map = Node.attributes(); 
    for(int i = 0 ; i < map.length() ; ++i) 
    { 
     if(!(map.item(i).isNull())) 
     { 
      QDomNode debug = map.item(i); 
      QDomAttr attr = debug.toAttr(); 
      if(!attr.isNull()) 
      { 
       cout << attr.value().toStdString(); 
       cout << attr.name().toStdString(); 
      } 
    } 
} 
2

Comment obtenir le prénom/valeur d'attribut dans PySide/PyQt:

if node.hasAttributes(): 
    nodeAttributes = node.attributes() 
    attributeItem = nodeAttributes.item(0) #pulls out first item 
    attribute = attributeItem.toAttr() 
    attributeName = attr.name() 
    attributeValue = attr.value() 

Cela montre comment obtenir un nom/paire de valeurs, mais il devrait être assez facile à étendre en boucle avec nodeAttributes.length() ou quelque chose de similaire.

Questions connexes