首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取qt中特定xml节点的所有属性

如何获取qt中特定xml节点的所有属性
EN

Stack Overflow用户
提问于 2010-06-10 17:50:16
回答 3查看 7.1K关注 0票数 1

可以在pyqt中获取特定节点的所有属性吗?例如..考虑以下节点:

< asset Name="3dAsset" ID="5"/>

我想检索("Name“和"ID")字符串

有可能吗?

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-10 19:20:40

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

代码语言:javascript
运行
复制
QString QDomElement::attribute ( const QString & name, const QString & defValue = QString() ) const

要获取所有属性,请使用

代码语言:javascript
运行
复制
QDomNamedNodeMap QDomElement::attributes () const

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

编辑:试试这个。

有了你所拥有的QDomNamedNodeMap,

代码语言:javascript
运行
复制
QDomNode QDomNamedNodeMap::item ( int index ) const

它将返回特定属性的QDomNode。然后给予,

代码语言:javascript
运行
复制
QDomAttr QDomNode::toAttr () const

利用获得的QDomAttr,

代码语言:javascript
运行
复制
QString name () const

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

票数 9
EN

Stack Overflow用户

发布于 2014-08-20 03:34:57

如何在PySide/PyQt中获取第一个属性名称/值:

代码语言:javascript
运行
复制
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()或类似的东西扩展循环应该足够简单。

票数 2
EN

Stack Overflow用户

发布于 2013-07-29 17:06:16

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

代码语言:javascript
运行
复制
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();
            }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3013311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档