如何在q中获取特定xml节点的所有属性

2024-04-24 23:52:47 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以获取pyqt中特定节点的所有属性? 例如。。考虑以下节点:
< asset Name="3dAsset" ID="5"/>
我想检索(“Name”和“ID”)字符串
有可能吗?

提前谢谢


Tags: 字符串nameid属性节点assetpyqt
3条回答

这是给c++的。我遇到了同样的问题。您需要转换为QDomAttr。我相信python中的API是相同的。

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();
            }
    }
}

如何在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()

这只展示了如何获得一个名称/值对,但是应该很容易用nodeAttributes.length()或类似的东西扩展循环。

您可以使用函数检索属性的特定值

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

要使用所有属性

QDomNamedNodeMap QDomElement::attributes () const

您必须遍历DomNamedNodeMap并获取每个属性的值。希望有帮助。

编辑:试试这个。

有了你给出的QDomNamedNodeMap

QDomNode QDomNamedNodeMap::item ( int index ) const

它将为特定属性返回一个QDomNode。 那就给吧

QDomAttr QDomNode::toAttr () const

用得到的QDomAttr给出

QString name () const

它将返回属性的名称。 希望有帮助。

相关问题 更多 >