QString UPnpCDSExtensionResults::GetResultXML() { QString sXML; for ( CDSObject *pObject = m_List.first(); pObject != NULL; pObject = m_List.next() ) { sXML += pObject->toXml(); } return( sXML ); }
void CDSObject::toXml( QTextStream &os ) //, FilterMap &filter ) { QString sEndTag = ""; bool bFilter = false; // -=>TODO: Need to add Filter Support // if (filter.find( "*" ) != filter.end()) // bFilter = false; switch( m_eType ) { case OT_Container: { os << "<container id=\"" << m_sId << "\" parentID=\"" << m_sParentId << "\" childCount=\"" << GetChildCount() << "\" restricted=\"" << GetBool( m_bRestricted ) << "\" searchable=\"" << GetBool( m_bSearchable ) << "\" >"; sEndTag = "</container>"; break; } case OT_Item: { os << "<item id=\"" << m_sId << "\" parentID=\"" << m_sParentId << "\" restricted=\"" << GetBool( m_bRestricted ) << "\" >"; sEndTag = "</item>"; break; } default: break; } os << "<dc:title>" << m_sTitle << "</dc:title>"; os << "<upnp:class>" << m_sClass << "</upnp:class>"; // ---------------------------------------------------------------------- // Output all Properties // ---------------------------------------------------------------------- for( PropertiesIterator it( m_properties ); it.current(); ++it ) { Property *pProp = it.current(); if (pProp->m_bRequired || (pProp->m_sValue.length() > 0)) { QString sName; if (pProp->m_sNameSpace.length() > 0) sName = pProp->m_sNameSpace + ":" + pProp->m_sName; else sName = pProp->m_sName; if (pProp->m_bRequired || !bFilter ) //|| ( filter.find( sName ) != filter.end()) { os << "<" << sName << ">"; os << pProp->m_sValue; os << "</" << sName << ">"; } } } // ---------------------------------------------------------------------- // Output any Res Elements // ---------------------------------------------------------------------- for ( Resource *pRes = m_resources.first(); pRes != NULL; pRes = m_resources.next() ) { os << "<res protocolInfo=\"" << pRes->m_sProtocolInfo << "\" "; for (NameValue *pNV = pRes->m_lstAttributes.first(); pNV != NULL; pNV = pRes->m_lstAttributes.next()) { os << pNV->sName << "=\"" << pNV->sValue << "\" "; } os << ">" << pRes->m_sURI; os << "</res>\r\n"; } // ---------------------------------------------------------------------- // Output any children // ---------------------------------------------------------------------- for ( CDSObject *pObject = m_children.first(); pObject != NULL; pObject = m_children.next() ) { pObject->toXml( os ); //, filter ); } // ---------------------------------------------------------------------- // Close Element Tag // ---------------------------------------------------------------------- os << sEndTag; }