本文整理汇总了C++中QDomElement::lastChildElement方法的典型用法代码示例。如果您正苦于以下问题:C++ QDomElement::lastChildElement方法的具体用法?C++ QDomElement::lastChildElement怎么用?C++ QDomElement::lastChildElement使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QDomElement
的用法示例。
在下文中一共展示了QDomElement::lastChildElement方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Clone
EntityPtr Entity::Clone(bool local, bool temporary, const QString &cloneName, AttributeChange::Type changeType) const
{
QDomDocument doc("Scene");
QDomElement sceneElem = doc.createElement("scene");
QDomElement entityElem = doc.createElement("entity");
entityElem.setAttribute("sync", BoolToString(!local));
entityElem.setAttribute("id", local ? scene_->NextFreeIdLocal() : scene_->NextFreeId());
// Set the temporary status in advance so it's valid when Scene::CreateContentFromXml signals changes in the scene
entityElem.setAttribute("temporary", BoolToString(temporary));
// Setting of a new name for the clone is a bit clumsy, but this is the best way to do it currently.
const bool setNameForClone = !cloneName.isEmpty();
bool cloneNameWritten = false;
for(ComponentMap::const_iterator i = components_.begin(); i != components_.end(); ++i)
{
i->second->SerializeTo(doc, entityElem);
if (setNameForClone && !cloneNameWritten && i->second->TypeId() == EC_Name::ComponentTypeId)
{
// Now that we've serialized the Name component, overwrite value of the "name" attribute.
QDomElement nameComponentElem = entityElem.lastChildElement();
nameComponentElem.firstChildElement().setAttribute("value", cloneName);
cloneNameWritten = true;
}
}
sceneElem.appendChild(entityElem);
doc.appendChild(sceneElem);
QList<Entity *> newEntities = scene_->CreateContentFromXml(doc, true, changeType);
return (!newEntities.isEmpty() && newEntities.first() ? newEntities.first()->shared_from_this() : EntityPtr());
}
示例2: appendExGeographicBoundingBox
void QgsConfigParser::appendExGeographicBoundingBox( QDomElement& layerElem,
QDomDocument& doc,
const QgsRectangle& layerExtent,
const QgsCoordinateReferenceSystem& layerCRS ) const
{
if ( layerElem.isNull() )
{
return;
}
QgsCoordinateReferenceSystem wgs84;
wgs84.createFromOgcWmsCrs( GEO_EPSG_CRS_AUTHID );
//Ex_GeographicBoundingBox
//transform the layers native CRS into WGS84
QgsCoordinateTransform exGeoTransform( layerCRS, wgs84 );
QgsRectangle wgs84BoundingRect = exGeoTransform.transformBoundingBox( layerExtent );
QDomElement ExGeoBBoxElement = doc.createElement( "EX_GeographicBoundingBox" );
QDomElement wBoundLongitudeElement = doc.createElement( "westBoundLongitude" );
QDomText wBoundLongitudeText = doc.createTextNode( QString::number( wgs84BoundingRect.xMinimum() ) );
wBoundLongitudeElement.appendChild( wBoundLongitudeText );
ExGeoBBoxElement.appendChild( wBoundLongitudeElement );
QDomElement eBoundLongitudeElement = doc.createElement( "eastBoundLongitude" );
QDomText eBoundLongitudeText = doc.createTextNode( QString::number( wgs84BoundingRect.xMaximum() ) );
eBoundLongitudeElement.appendChild( eBoundLongitudeText );
ExGeoBBoxElement.appendChild( eBoundLongitudeElement );
QDomElement sBoundLatitudeElement = doc.createElement( "southBoundLatitude" );
QDomText sBoundLatitudeText = doc.createTextNode( QString::number( wgs84BoundingRect.yMinimum() ) );
sBoundLatitudeElement.appendChild( sBoundLatitudeText );
ExGeoBBoxElement.appendChild( sBoundLatitudeElement );
QDomElement nBoundLatitudeElement = doc.createElement( "northBoundLatitude" );
QDomText nBoundLatitudeText = doc.createTextNode( QString::number( wgs84BoundingRect.yMaximum() ) );
nBoundLatitudeElement.appendChild( nBoundLatitudeText );
ExGeoBBoxElement.appendChild( nBoundLatitudeElement );
//BoundingBox element
QDomElement bBoxElement = doc.createElement( "BoundingBox" );
if ( layerCRS.isValid() )
{
bBoxElement.setAttribute( "CRS", layerCRS.authid() );
}
bBoxElement.setAttribute( "minx", QString::number( layerExtent.xMinimum() ) );
bBoxElement.setAttribute( "miny", QString::number( layerExtent.yMinimum() ) );
bBoxElement.setAttribute( "maxx", QString::number( layerExtent.xMaximum() ) );
bBoxElement.setAttribute( "maxy", QString::number( layerExtent.yMaximum() ) );
QDomElement lastCRSElem = layerElem.lastChildElement( "CRS" );
if ( !lastCRSElem.isNull() )
{
layerElem.insertAfter( ExGeoBBoxElement, lastCRSElem );
layerElem.insertAfter( bBoxElement, ExGeoBBoxElement );
}
else
{
layerElem.appendChild( ExGeoBBoxElement );
layerElem.appendChild( bBoxElement );
}
}
示例3: if
Attribute::Attribute(const QDomElement& element)
: m_references()
{
if (element.firstChildElement() != element.lastChildElement()) {
kFatal() << "We don't handle complex attributes so far";
}
QDomElement content = element.firstChildElement();
if (content.tagName() == "ref") {
m_references << content.attribute("name");
}
m_name = element.attribute("name");
m_values = listValuesFromNode(element);
if (m_name == "style:border-line-width")
m_requiredExtraAttributes["fo:border"] = "double";
else if (m_name == "style:border-line-width-left")
m_requiredExtraAttributes["fo:border-left"] = "double";
else if (m_name == "style:border-line-width-right")
m_requiredExtraAttributes["fo:border-right"] = "double";
else if (m_name == "style:border-line-width-top")
m_requiredExtraAttributes["fo:border-top"] = "double";
else if (m_name == "style:border-line-width-bottom")
m_requiredExtraAttributes["fo:border-bottom"] = "double";
else if (m_name == "style:diagonal-tl-br-widths")
m_requiredExtraAttributes["style:diagonal-tl-br"] = "double";
else if (m_name == "style:diagonal-bl-tr-widths")
m_requiredExtraAttributes["style:diagonal-bl-tr"] = "double";
}
示例4: convertFrame
bool Converter::convertFrame(const QDomElement &element)
{
QDomElement child = element.firstChildElement();
QDomElement suchild = element.lastChildElement("title");
/// svg:title alt && title
while (!child.isNull())
{
if (child.tagName() == QLatin1String("image"))
{
const QString href = child.attribute("href");
const QString xname = element.attribute("name");
QString alttitle = QString("Name:%1 - Ref:%2").arg(xname).arg(href);
if (suchild.tagName() == QLatin1String("title"))
{
alttitle.append(QString(" - Title:%1").arg(suchild.text()));
}
QTextImageFormat format;
format.setToolTip(alttitle);
format.setWidth(4.0/3.0*StyleParser::convertUnit(element.attribute("width")));
format.setHeight(4.0/3.0*StyleParser::convertUnit(element.attribute("height")));
format.setName(href);
format.setBackground(Qt::white);
m_Cursor->insertImage(format);
}
child = child.nextSiblingElement();
}
return true;
}
示例5: parseXmlFile
void PhonemeEditorWidget::parseXmlFile()
{
// Clear old text boxes
QList<TimeLineTextEdit *> oldText= m_text->findChildren<TimeLineTextEdit *>();
while(!oldText.isEmpty())
delete oldText.takeFirst();
// Clear old phoneme comboboxes
QList<TimeLineComboBox *> oldPhoneme = m_phonemes->findChildren<TimeLineComboBox *>();
while(!oldPhoneme.isEmpty())
delete oldPhoneme.takeFirst();
// Get new items from phoneme xml
QDomElement timings = m_phonemeXml.firstChildElement("PhonemeTimings");
// Get length of phoneme timings
QDomElement last = timings.lastChildElement("word");
int sentenceLength = 0;
if(!last.isNull()) sentenceLength = last.attribute("end", "0").toInt();
last = timings.lastChildElement("phn");
if( !last.isNull() ) sentenceLength = max(sentenceLength, last.attribute("end", "0").toInt() );
// Get minimal phoneme width
QDomNodeList phnlist = timings.elementsByTagName("phn");
int minPhnWidth = 999999;
for(unsigned int i=0; i<phnlist.length(); i++)
{
QDomElement phn = phnlist.item(i).toElement();
// Skip silence
if( phn.attribute("value").compare("x") == 0 ) continue;
int start = phn.attribute("start", "0").toInt();
int end = phn.attribute("end", "999999").toInt();
if( end-start < minPhnWidth ) minPhnWidth = end-start;
}
int minWidth = (int)( 39.5f / minPhnWidth * sentenceLength );
// Get length of panels and enlarge them if too small
if( m_text->width()-2 < minWidth)
{
m_text->setFixedWidth(minWidth+2);
m_phonemes->setFixedWidth(minWidth+2);
m_phonemeScrollArea->setFixedWidth(m_text->x()+minWidth+2);
}
// Add wordBoxes in reverse direction, because first nodes have higher priority
// and should be printed above of the others
QDomNode wordNode = timings.lastChild();
while(!wordNode.isNull())
{
// Get words
if( wordNode.nodeName().compare("word") == 0)
{
QDomElement word = wordNode.toElement();
TimeLineTextEdit* wordBox = new TimeLineTextEdit(word, sentenceLength, m_text);
connect(wordBox, SIGNAL(xmlNodeChanged()), this, SLOT(enableSaveButton()) );
wordBox->setVisible(true);
// Get phonemes of a word
QDomNodeList phonemeList = word.elementsByTagName("phn");
// also reverse direction
for(int i = phonemeList.size()-1; i >=0; i--)
{
QDomElement phoneme = phonemeList.item(i).toElement();
// Skip silence
if( phoneme.attribute("value").compare("x") == 0 ) continue;
TimeLineComboBox* phonemeBox = new TimeLineComboBox(phoneme, sentenceLength, m_phonemeList, m_phonemes);
connect(phonemeBox, SIGNAL(xmlNodeChanged()), this, SLOT(enableSaveButton()) );
connect(phonemeBox, SIGNAL(xmlNodeChanged()), wordBox, SLOT(updateFromXml()));
phonemeBox->setVisible(true);
}
}
// Get phonemes which don't belong to words
else if( wordNode.nodeName().compare("phn") == 0 )
{
QDomElement phoneme = wordNode.toElement();
// Skip silence
if( phoneme.attribute("value").compare("x") != 0 )
{
TimeLineComboBox* phonemeBox = new TimeLineComboBox(phoneme, sentenceLength, m_phonemeList, m_phonemes);
connect(phonemeBox, SIGNAL(xmlNodeChanged()), this, SLOT(enableSaveButton()) );
phonemeBox->setVisible(true);
}
}
wordNode = wordNode.previousSibling();
}
}
示例6: processMergeTags
/************************************************
Duplicate <MergeXXX> elements (that specify the same file) are handled as with
duplicate <AppDir> elements (the last duplicate is used).
************************************************/
void XdgMenuReader::processMergeTags(QDomElement& element)
{
QDomElement n = element.lastChildElement();
QStringList mergedFiles;
while (!n.isNull())
{
QDomElement next = n.previousSiblingElement();
// MergeFile ..................
if (n.tagName() == "MergeFile")
{
processMergeFileTag(n, &mergedFiles);
n.parentNode().removeChild(n);
}
// MergeDir ...................
else if(n.tagName() == "MergeDir")
{
processMergeDirTag(n, &mergedFiles);
n.parentNode().removeChild(n);
}
// DefaultMergeDirs ...........
else if (n.tagName() == "DefaultMergeDirs")
{
processDefaultMergeDirsTag(n, &mergedFiles);
n.parentNode().removeChild(n);
}
// AppDir ...................
else if(n.tagName() == "AppDir")
{
processAppDirTag(n);
n.parentNode().removeChild(n);
}
// DefaultAppDirs .............
else if(n.tagName() == "DefaultAppDirs")
{
processDefaultAppDirsTag(n);
n.parentNode().removeChild(n);
}
// DirectoryDir ...................
else if(n.tagName() == "DirectoryDir")
{
processDirectoryDirTag(n);
n.parentNode().removeChild(n);
}
// DefaultDirectoryDirs ...........
else if(n.tagName() == "DefaultDirectoryDirs")
{
processDefaultDirectoryDirsTag(n);
n.parentNode().removeChild(n);
}
// Menu .......................
else if(n.tagName() == "Menu")
{
processMergeTags(n);
}
n = next;
}
}
示例7: dragModuleName
void writeJob::dragModuleName(const QString name, const int index, const int allRow, const QString upOrDown)
{
qDebug()<<"4.dragModuleName";
QDomElement root = doc.documentElement();
QDomElement modEle = root.firstChildElement("Module");
if(index==0) //插到头
{
while (!modEle.isNull())
{
if(modEle.attribute("name")==name && modEle.attribute("id")==moduleID)
{
QDomElement firstModEle=root.firstChildElement("Module");
root.insertBefore(modEle,firstModEle);
break;
}
modEle = modEle.nextSiblingElement("Module");
}
}
else if(index==(allRow-1)) // 插到尾
{
while (!modEle.isNull())
{
if(modEle.attribute("name")==name && modEle.attribute("id")==moduleID)
{
QDomElement lastModEle=root.lastChildElement("Module");
root.insertAfter(modEle,lastModEle);
break;
}
modEle = modEle.nextSiblingElement("Module");
}
}
else //其他情况
{
QDomElement insertAfterEle;
QDomElement rightEle;
insertAfterEle=modEle;
//难道还要分上到下,下到上??
if(upOrDown=="up")
{
for(int i=0; i<index-1;i++)
{
modEle = modEle.nextSiblingElement("Module");
insertAfterEle=modEle;
qDebug()<<i<<insertAfterEle.attribute("name");
}
}
if(upOrDown=="down")
{
for(int i=0; i<index;i++)
{
modEle = modEle.nextSiblingElement("Module");
insertAfterEle=modEle;
qDebug()<<i<<insertAfterEle.attribute("name");
}
}
modEle=root.firstChildElement("Module");
while (!modEle.isNull())
{
if(modEle.attribute("name")==name && modEle.attribute("id")==moduleID)
{
rightEle=modEle;
qDebug()<<rightEle.attribute("name")<<insertAfterEle.attribute("name");
root.insertAfter(rightEle,insertAfterEle);
break;
}
modEle = modEle.nextSiblingElement("Module");
}
}
if(!write())
qDebug()<<"delete job failed";
}
示例8: readResource
ResourcePtr ModelMaker::readResource(Model& model, const QDomElement& el)
{
QString rdfns = RDFVocab::self()->namespaceURI();
QString about = QLatin1String("about");
QString resource = QLatin1String("resource");
QString descriptionStr = QLatin1String("Description");
ResourcePtr res;
ResourcePtr type = model.createResource(el.namespaceURI() + el.localName());
if (*type == *(RDFVocab::self()->seq()))
{
SequencePtr seq = model.createSequence(el.attribute(about));
res = seq;
}
else
{
res = model.createResource(el.attribute(about));
}
model.addStatement(res, RDFVocab::self()->type(), type);
QDomNodeList children = el.childNodes();
bool isSeq = res->isSequence();
for (uint i = 0; i < children.length(); ++i)
{
if (children.item(i).isElement())
{
QDomElement ce = children.item(i).toElement();
PropertyPtr pred = model.createProperty(ce.namespaceURI() + ce.localName());
if (ce.hasAttribute(resource)) // referenced Resource via (rdf:)resource
{
NodePtr obj = model.createResource(ce.attribute(resource));
if (isSeq && *pred == *(RDFVocab::self()->li()))
{
SequencePtr tseq = boost::static_pointer_cast<Sequence>(res);
tseq->append(obj);
}
else
model.addStatement(res, pred, obj);
}
else if (!ce.text().isEmpty() && ce.lastChildElement().isNull()) // Literal
{
NodePtr obj = model.createLiteral(ce.text());
if (isSeq && *pred == *(RDFVocab::self()->li()))
{
SequencePtr tseq = boost::static_pointer_cast<Sequence>(res);
tseq->append(obj);
}
else
model.addStatement(res, pred, obj);
}
else // embedded description
{
QDomElement re = ce.lastChildElement();
QString uri = re.attribute(about);
// read recursively
NodePtr obj = readResource(model, re);
if (isSeq && *pred == *(RDFVocab::self()->li()))
{
SequencePtr tseq = boost::static_pointer_cast<Sequence>(res);
tseq->append(obj);
}
else
model.addStatement(res, pred, obj);
}
//TODO: bag, reification (nice to have, but not important for basic RSS 1.0)
}
}
return res;
}
示例9: doParseXml
//解析xml协议
void StreamMonitor::doParseXml(QString xml)
{
LOG(INFO,"rcv xml msg:");
qInfo()<<xml;
QDomDocument document;
QString error;
int row = 0, column = 0;
if(!document.setContent(xml, false, &error, &row, &column)) //加载xml内容
{
qCritical()<<(QString("parse file failed at line row and column") + QString::number(row, 10) + QString(",") + QString::number(column, 10));
return ;
}
if(document.isNull())
{
LOG(WARNING,"document is null");
return ;
}
//解析
QDomElement message = document.documentElement(); //<message>
QDomElement type = message.firstChildElement(); //<TYPE>标签
qInfo()<<"type="<<type.text().toInt();
switch (type.text().toInt()) {
case Rcv_Cameras_Info:
{
qInfo()<<" Cameras List Parse";
QDomElement action = message.firstChildElement("ACTION"); //<ACTION>
qInfo()<<"action(1,init; 2,add; 3,del)="<<action.text().toInt();
//<Equipment>
QDomNodeList equipments = message.elementsByTagName("Equipment");
int nCount = equipments.count();
for(int i=0; i<nCount; i++)
{
QDomNode eqNode = equipments.item(i);
QDomElement equipment = eqNode.toElement(); //<EquipMent>
QDomElement cameraId = equipment.firstChildElement(); //<CAMID>
CameraStateInfo camInfo;
camInfo.cmareId = cameraId.text();
qInfo()<<"cameraId="<<cameraId.text();
QDomElement udpAddr = equipment.lastChildElement("UDP"); //<UDP>
camInfo.udpAddr = udpAddr.text();
qInfo()<<"udpAddr="<<udpAddr.text();
QDomElement uuid = equipment.firstChildElement("UUID"); //<UUID>
camInfo.uuid = uuid.text();
QDomElement status = equipment.firstChildElement("STATUS"); //<STATUS>
camInfo.online = status.text().toInt()? false:true; //0在线 1不在线
switch (action.text().toInt())
{
case 1: //init
case 2: //add
{
if(!camerasInfo.contains(camInfo))
{
camerasInfo.append(camInfo);
}else
camerasInfo[camerasInfo.indexOf(camInfo)] = camInfo;
}
break;
case 3: //del
{
if(camerasInfo.contains(camInfo))
{
camerasInfo.removeOne(camInfo);
}
}
break;
default:
break;
}
}
}
break;
case Rcv_Camera_Online:
{
qInfo()<<" Cameras online Parse";
//<Equipment>
QDomNodeList equipments = message.elementsByTagName("Equipment");
int nCount = equipments.count();
for(int i=0; i<nCount; i++)
{
QDomNode eqNode = equipments.item(i);
QDomElement equipment = eqNode.toElement(); //<EquipMent>
QDomElement cameraId = equipment.firstChildElement(); //<CAMID>
QDomElement status = equipment.lastChildElement(); //<STATUS>
CameraStateInfo camInfo;
camInfo.cmareId = cameraId.text();
camInfo.online = status.text().toInt()==0? true:false;
if(camerasInfo.contains(camInfo))
{
camerasInfo[camerasInfo.indexOf(camInfo)].online=camInfo.online;
}else
camerasInfo.append(camInfo);
qInfo()<<"cameraId="<<cameraId.text()<<" status(0 normal)="<<status.text().toInt();
//来一条在线状态就要转发给运维
OMData om;
om.uuid = uuid;
//.........这里部分代码省略.........
示例10: addPlugin
void PluginManager::addPlugin(QDir* dir) {
QDomDocument doc;
QFile pluginXmlFile(dir->absolutePath()+QDir::separator()+"plugin.xml");
if(!pluginXmlFile.exists()) {
qDebug("error plugin.xml not exist "+dir->absolutePath().toUtf8());
return;
}
pluginXmlFile.open(QIODevice::ReadOnly);
doc.setContent(&pluginXmlFile);
pluginXmlFile.close();
QDomElement plugin = doc.documentElement();
QString name = plugin.lastChildElement("name").text();
QString version = plugin.lastChildElement("version").text();
QString description = plugin.lastChildElement("description").text();
QString cellBackground = dir->absolutePath()+QDir::separator()+plugin.lastChildElement("cellBackground").text();
Plugin* p = new Plugin(name, description,version);
p->setCellBackground(cellBackground);
qDebug("Plugin: "+name.toUtf8());
QDomNodeList listPawns = plugin.lastChildElement("pawns").elementsByTagName("pawn");
for(int i = 0;i < listPawns.count(); i++)
{
QString pid = listPawns.at(i).lastChildElement("id").text();
QString pname = listPawns.at(i).lastChildElement("name").text();
QString picon = dir->absolutePath()+QDir::separator()+listPawns.at(i).lastChildElement("icon").text();
if(!p->existPawn(pid))
{
qDebug(" Pawn: "+pname.toUtf8()+" (id:"+pid.toUtf8()+", icon:"+picon.toUtf8()+")");
Pawn* pawn = new Pawn(pid, pname, picon);
p->addPawn(pawn);
}
else
{
qDebug(" Pawn can't add");
}
}
QDomNodeList listrules = plugin.lastChildElement("rules").elementsByTagName("rule");
for(int i = 0;i < listrules.count(); i++)
{
QString from = listrules.at(i).attributes().namedItem("pawn").toAttr().value();
QString to = listrules.at(i).attributes().namedItem("newPawn").toAttr().value();
if(p->existPawn(from) && p->existPawn(to)) {
Rule* r = new Rule(p->getPawn(from), p->getPawn(to));
qDebug(" Rule: (from:"+from.toUtf8()+" to:"+to.toUtf8()+")");
for(int j = 0;j < listrules.at(i).childNodes().count(); j++)
{
QString op = listrules.at(i).childNodes().at(j).nodeName();
QString pawn = listrules.at(i).childNodes().at(j).attributes().namedItem("pawn").toAttr().value();
QString value = listrules.at(i).childNodes().at(j).toElement().text();
int intValue = value.toInt();
AbstractOperator* o = NULL;
if(op == "pawnNumberIsEqual")
o = new EqualOperator(intValue, pawn);
if(op == "pawnNumberIsLower")
o = new LowerOperator(intValue, pawn);
if(op == "pawnNumberIsGreater")
o = new GreaterOperator(intValue, pawn);
if(o != NULL && p->existPawn(pawn))
{
r->addOperator(o);
qDebug(" with "+pawn.toUtf8()+" "+op.toUtf8()+" "+value.toUtf8());
}
else
{
qDebug(" Operator can't add");
}
}
p->getPawn(from)->addRule(r);
}
else
{
qDebug(" Rule can't add");
}
}
plugins->push_back(p);
}