如何在Qt中获取特定XML节点的所有属性
在pyqt中,能不能获取某个节点的所有属性呢?
比如说,考虑下面这个节点:
< asset Name="3dAsset" ID="5"/>
我想提取出("Name"和"ID")这两个字符串。
这可能吗?
提前谢谢你!
3 个回答
0
这是关于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();
}
}
}
2
如何在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()
或者类似的方式。
9
你可以通过这个函数来获取某个属性的具体值,
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
这会返回属性的名称。希望这对你有帮助。