本文整理汇总了C++中QDomElement::isNull方法的典型用法代码示例。如果您正苦于以下问题:C++ QDomElement::isNull方法的具体用法?C++ QDomElement::isNull怎么用?C++ QDomElement::isNull使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QDomElement
的用法示例。
在下文中一共展示了QDomElement::isNull方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: build
void DistributionTables::build(const std::string& BasePath,
const std::string& SourcesFileName, const std::string& DistributionFileName)
{
SourcesTable.clear();
UnitsTable.clear();
// Sources file
QDomDocument Doc;
QDomElement Root;
std::string SourcesFilePath = BasePath+"/"+SourcesFileName;
QFile File(QString(SourcesFilePath.c_str()));
if (!File.open(QIODevice::ReadOnly))
{
throw openfluid::base::FrameworkException(OPENFLUID_CODE_LOCATION,
"Error opening " + SourcesFilePath);
}
bool Parsed = Doc.setContent(&File);
File.close();
if (Parsed)
{
Root = Doc.documentElement();
if (!Root.isNull())
{
if (Root.tagName() == QString("openfluid"))
{
for(QDomElement CurrNode = Root.firstChildElement(); !CurrNode.isNull();
CurrNode = CurrNode.nextSiblingElement())
{
if (CurrNode.tagName() == QString("datasources"))
{
for(QDomElement CurrNode2 = CurrNode.firstChildElement(); !CurrNode2.isNull();
CurrNode2 = CurrNode2.nextSiblingElement())
{
if (CurrNode2.tagName() == QString("filesource"))
{
QString xmlID = CurrNode2.attributeNode(QString("ID")).value();
QString xmlFile = CurrNode2.attributeNode(QString("file")).value();
if (!xmlID.isNull() && !xmlFile.isNull())
{
SourcesTable[xmlID.toStdString()] = BasePath + "/" + xmlFile.toStdString();
}
}
}
}
}
}
else
throw openfluid::base::FrameworkException(OPENFLUID_CODE_LOCATION,
"Cannot find <openfluid> tag in sources file " +
SourcesFilePath);
}
else
throw openfluid::base::FrameworkException(OPENFLUID_CODE_LOCATION,"Wrong formatted sources file " +
SourcesFilePath);
}
else
throw openfluid::base::FrameworkException(OPENFLUID_CODE_LOCATION,"Cannot open sources file " +
SourcesFilePath);
// Units distribution file
long UnitID;
std::string DataSrcID;
ColumnTextParser DistriFileParser("%");
std::string DistributionFilePath = BasePath+"/"+DistributionFileName;
if (openfluid::tools::Filesystem::isFile(DistributionFilePath))
{
if (DistriFileParser.loadFromFile(DistributionFilePath) &&
DistriFileParser.getColsCount() == 2 &&
DistriFileParser.getLinesCount() >0)
{
for (unsigned int i=0;i<DistriFileParser.getLinesCount();i++)
{
if (DistriFileParser.getLongValue(i,0,&UnitID) && DistriFileParser.getStringValue(i,1,&DataSrcID))
{
if (SourcesTable.find(DataSrcID) != SourcesTable.end())
UnitsTable[UnitID] = DataSrcID;
else
throw openfluid::base::FrameworkException(OPENFLUID_CODE_LOCATION,
"Error in distribution file " + DistributionFilePath +
", data source ID not found");
}
else
throw openfluid::base::FrameworkException(OPENFLUID_CODE_LOCATION,
"Error in distribution file " + DistributionFilePath +
", format error");
//.........这里部分代码省略.........
示例2: parseExecutionResults
bool TrussResultsManager::parseExecutionResults (
Plugin::ExecutionResult exRes,
QString& errMsg )
{
QDomDocument doc;
if ( exRes.status == Plugin::InternalErrStatus ) {
errMsg = exRes.data;
return false;
}
if ( ! doc.setContent( exRes.data ) ) {
errMsg = QString( tr("Wrong XML format of the results") );
return false;
}
QDomElement pluginResElem = doc.documentElement();
if ( pluginResElem.isNull() ) {
errMsg = QString( tr("Wrong XML format of the results") );
return false;
}
if ( ! pluginResElem.hasAttribute( "trussUUID" ) ) {
errMsg = QString( tr("Wrong XML format of the results: truss UUID wasn't set") );
return false;
}
QString trussID = pluginResElem.attribute( "trussUUID" );
WindowList windows = windowMng.getTrussUnitWindowList();
bool found = false;
TrussUnitWindow* w = 0;
foreach ( w, windows )
if ( w->getUUID() == trussID ) {
found = true;
break;
}
if ( ! found ) {
errMsg = QString( tr("Truss with the given UUID wasn't found") );
return false;
}
// Create new solution results
TrussSolutionResults* newTrussResults = &createSolutionResults();
PluginResults& pluginRes = newTrussResults->createPluginResults();
// Reading results XML
try { pluginRes.loadAttributesFromXML( pluginResElem, false ); }
catch ( ... ) {
// Remove if there was error while reading XML
removeSolutionResults( *newTrussResults );
errMsg = QString( tr("Error while reading XML of the results") );
return false;
}
// Remove old results
TrussSolutionResults* trussResults = getResultsForTrussUnit( trussID );
if ( trussResults )
removeSolutionResults( *trussResults );
newTrussResults->setTrussUnit( trussID );
w->setCalculatedStatus( true );
return true;
}
示例3: sosLayer
QgsVectorLayer* QgsRemoteOWSBuilder::sosLayer( const QDomElement& remoteOWSElem, const QString& url, const QString& layerName, QList<QgsMapLayer*>& layersToRemove, bool allowCaching ) const
{
//url for sos provider is: "url=... method=... xml=....
QString method = remoteOWSElem.attribute( "method", "POST" ); //possible GET/POST/SOAP
//search for <LayerSensorObservationConstraints> node that is sibling of remoteOSW element
//parent element of <remoteOWS> (normally <UserLayer>)
QDomElement parentElem = remoteOWSElem.parentNode().toElement();
if ( parentElem.isNull() )
{
return 0;
}
//Root element of the request (can be 'GetObservation' or 'GetObservationById' at the moment, probably also 'GetFeatureOfInterest' or 'GetFeatureOfInterestTime' in the future)
QDomElement requestRootElem;
QDomNodeList getObservationNodeList = parentElem.elementsByTagName( "GetObservation" );
if ( getObservationNodeList.size() > 0 )
{
requestRootElem = getObservationNodeList.at( 0 ).toElement();
}
else //GetObservationById?
{
QDomNodeList getObservationByIdNodeList = parentElem.elementsByTagName( "GetObservationById" );
if ( getObservationByIdNodeList.size() > 0 )
{
requestRootElem = getObservationByIdNodeList.at( 0 ).toElement();
}
}
if ( requestRootElem.isNull() )
{
return 0;
}
QDomDocument requestDoc;
QDomNode newDocRoot = requestDoc.importNode( requestRootElem, true );
requestDoc.appendChild( newDocRoot );
QString providerUrl = "url=" + url + " method=" + method + " xml=" + requestDoc.toString();
//check if layer is already in cache
QgsVectorLayer* sosLayer = 0;
if ( allowCaching )
{
sosLayer = dynamic_cast<QgsVectorLayer*>( QgsMSLayerCache::instance()->searchLayer( providerUrl, layerName ) );
if ( sosLayer )
{
return sosLayer;
}
}
sosLayer = new QgsVectorLayer( providerUrl, "Sensor layer", "SOS" );
if ( !sosLayer->isValid() )
{
delete sosLayer;
return 0;
}
else
{
if ( allowCaching )
{
QgsMSLayerCache::instance()->insertLayer( providerUrl, layerName, sosLayer );
}
else
{
layersToRemove.push_back( sosLayer );
}
}
return sosLayer;
}
示例4: ProcessRequest
bool UPNPSubscription::ProcessRequest(HttpWorkerThread *pThread,
HTTPRequest *pRequest)
{
(void)pThread;
if (!pRequest)
return false;
if (pRequest->m_sBaseUrl != "/Subscriptions")
return false;
if (pRequest->m_sMethod != "event")
return false;
LOG(VB_UPNP, LOG_DEBUG, QString("%1\n%2")
.arg(pRequest->m_sRawRequest).arg(pRequest->m_sPayload));
if (pRequest->m_sPayload.isEmpty())
return true;
pRequest->m_eResponseType = ResponseTypeHTML;
QString nt = pRequest->m_mapHeaders["nt"];
QString nts = pRequest->m_mapHeaders["nts"];
bool no = pRequest->m_sRawRequest.startsWith("NOTIFY");
if (nt.isEmpty() || nts.isEmpty() || !no)
{
pRequest->m_nResponseStatus = 400;
return true;
}
pRequest->m_nResponseStatus = 412;
if (nt != "upnp:event" || nts != "upnp:propchange")
return true;
QString usn = pRequest->m_mapParams["usn"];
QString sid = pRequest->m_mapHeaders["sid"];
if (usn.isEmpty() || sid.isEmpty())
return true;
// N.B. Validating the usn and uuid here might mean blocking for some time
// while waiting for a subscription to complete. While this operates in a
// worker thread, worker threads are a limited resource which we could
// rapidly overload if a number of events arrive. Instead let the
// subscribing objects validate the usn - the uuid should be superfluous.
QString seq = pRequest->m_mapHeaders["seq"];
// mediatomb sends some extra character(s) at the end of the payload
// which throw Qt, so try and trim them off
int loc = pRequest->m_sPayload.lastIndexOf("propertyset>");
QString payload = (loc > -1) ? pRequest->m_sPayload.left(loc + 12) :
pRequest->m_sPayload;
LOG(VB_UPNP, LOG_DEBUG, QString("Payload:\n%1").arg(payload));
pRequest->m_nResponseStatus = 400;
QDomDocument body;
QString error;
int errorCol = 0;
int errorLine = 0;
if (!body.setContent(payload, true, &error, &errorLine, &errorCol))
{
LOG(VB_GENERAL, LOG_ERR,
QString("Failed to parse event: Line: %1 Col: %2 Error: '%3'")
.arg(errorLine).arg(errorCol).arg(error));
return true;
}
VERBOSE(VB_UPNP|VB_EXTRA, "/n/n" + body.toString(4) + "/n/n");
QDomNodeList properties = body.elementsByTagName("property");
QHash<QString,QString> results;
// this deals with both one argument per property (compliant) and mutliple
// arguments per property as sent by mediatomb
for (int i = 0; i < properties.size(); i++)
{
QDomNodeList arguments = properties.at(i).childNodes();
for (int j = 0; j < arguments.size(); j++)
{
QDomElement e = arguments.at(j).toElement();
if (!e.isNull() && !e.text().isEmpty() && !e.tagName().isEmpty())
results.insert(e.tagName(), e.text());
}
}
// using MythObservable allows multiple objects to subscribe to the same
// service but is less efficient from an eventing perspective, especially
// if multiple objects are subscribing
if (!results.isEmpty())
{
pRequest->m_nResponseStatus = 200;
results.insert("usn", usn);
results.insert("seq", seq);
MythInfoMapEvent me("UPNP_EVENT", results);
dispatch(me);
}
return true;
}
示例5: parse
/// \cond
void QXmppPresence::parse(const QDomElement &element)
{
QXmppStanza::parse(element);
const QString type = element.attribute("type");
for (int i = Error; i <= Probe; i++) {
if (type == presence_types[i]) {
d->type = static_cast<Type>(i);
break;
}
}
const QString show = element.firstChildElement("show").text();
for (int i = Online; i <= Invisible; i++) {
if (show == presence_shows[i]) {
d->availableStatusType = static_cast<AvailableStatusType>(i);
break;
}
}
d->statusText = element.firstChildElement("status").text();
d->priority = element.firstChildElement("priority").text().toInt();
QXmppElementList extensions;
QDomElement xElement = element.firstChildElement();
d->vCardUpdateType = VCardUpdateNone;
while(!xElement.isNull())
{
// XEP-0045: Multi-User Chat
if(xElement.namespaceURI() == ns_muc) {
d->mucSupported = true;
d->mucPassword = xElement.firstChildElement("password").text();
}
else if(xElement.namespaceURI() == ns_muc_user)
{
QDomElement itemElement = xElement.firstChildElement("item");
d->mucItem.parse(itemElement);
QDomElement statusElement = xElement.firstChildElement("status");
d->mucStatusCodes.clear();
while (!statusElement.isNull()) {
d->mucStatusCodes << statusElement.attribute("code").toInt();
statusElement = statusElement.nextSiblingElement("status");
}
}
// XEP-0153: vCard-Based Avatars
else if(xElement.namespaceURI() == ns_vcard_update)
{
QDomElement photoElement = xElement.firstChildElement("photo");
if(!photoElement.isNull())
{
d->photoHash = QByteArray::fromHex(photoElement.text().toLatin1());
if(d->photoHash.isEmpty())
d->vCardUpdateType = VCardUpdateNoPhoto;
else
d->vCardUpdateType = VCardUpdateValidPhoto;
}
else
{
d->photoHash = QByteArray();
d->vCardUpdateType = VCardUpdateNotReady;
}
}
// XEP-0115: Entity Capabilities
else if(xElement.tagName() == "c" && xElement.namespaceURI() == ns_capabilities)
{
d->capabilityNode = xElement.attribute("node");
d->capabilityVer = QByteArray::fromBase64(xElement.attribute("ver").toLatin1());
d->capabilityHash = xElement.attribute("hash");
d->capabilityExt = xElement.attribute("ext").split(" ", QString::SkipEmptyParts);
}
else if (xElement.tagName() == "addresses")
{
}
else if (xElement.tagName() == "error")
{
}
else if (xElement.tagName() == "show")
{
}
else if (xElement.tagName() == "status")
{
}
else if (xElement.tagName() == "priority")
{
}
else
{
// other extensions
extensions << QXmppElement(xElement);
}
xElement = xElement.nextSiblingElement();
}
setExtensions(extensions);
}