diff options
Diffstat (limited to 'sax/source/fastparser/legacyfastparser.cxx')
-rw-r--r-- | sax/source/fastparser/legacyfastparser.cxx | 47 |
1 files changed, 21 insertions, 26 deletions
diff --git a/sax/source/fastparser/legacyfastparser.cxx b/sax/source/fastparser/legacyfastparser.cxx index 458e91b2af89..97c5ab277f89 100644 --- a/sax/source/fastparser/legacyfastparser.cxx +++ b/sax/source/fastparser/legacyfastparser.cxx @@ -134,6 +134,9 @@ private: const OUString getNamespacePrefixFromToken( sal_Int32 nToken ); const OUString getNameFromToken( sal_Int32 nToken ); + static const OUString aDefaultNamespace; + static const OUString aNamespaceSeparator; + public: CallbackDocumentHandler( Reference< XDocumentHandler > const & xDocumentHandler, rtl::Reference< NamespaceHandler > const & rNamespaceHandler, @@ -156,6 +159,9 @@ public: }; +const OUString CallbackDocumentHandler::aDefaultNamespace = OUString(""); +const OUString CallbackDocumentHandler::aNamespaceSeparator = OUString(":"); + const OUString CallbackDocumentHandler::getNamespacePrefixFromToken( sal_Int32 nToken ) { if ( ( nToken & 0xffff0000 ) != 0 ) @@ -210,32 +216,28 @@ void SAL_CALL CallbackDocumentHandler::setDocumentLocator( const Reference< XLoc void SAL_CALL CallbackDocumentHandler::startFastElement( sal_Int32 nElement , const Reference< XFastAttributeList >& Attribs ) { - startUnknownElement( CallbackDocumentHandler::getNamespacePrefixFromToken( nElement ), - CallbackDocumentHandler::getNameFromToken( nElement ), Attribs ); + const OUString& rPrefix = CallbackDocumentHandler::getNamespacePrefixFromToken( nElement ); + const OUString& rLocalName = CallbackDocumentHandler::getNameFromToken( nElement ); + startUnknownElement( aDefaultNamespace, (rPrefix.isEmpty())? rLocalName : rPrefix + aNamespaceSeparator + rLocalName, Attribs ); } -void SAL_CALL CallbackDocumentHandler::startUnknownElement( const OUString& Namespace, const OUString& Name, const Reference< XFastAttributeList >& Attribs ) +void SAL_CALL CallbackDocumentHandler::startUnknownElement( const OUString& /*Namespace*/, const OUString& Name, const Reference< XFastAttributeList >& Attribs ) { if ( m_xDocumentHandler.is() ) { - OUString elementName; rtl::Reference < comphelper::AttributeList > rAttrList = new comphelper::AttributeList; m_aNamespaceHandler->addNSDeclAttributes( rAttrList ); - if ( !Namespace.isEmpty() ) - elementName = Namespace + ":" + Name; - else - elementName = Name; Sequence< xml::FastAttribute > fastAttribs = Attribs->getFastAttributes(); sal_uInt16 len = fastAttribs.getLength(); for (sal_uInt16 i = 0; i < len; i++) { - OUString& rAttrValue = fastAttribs[i].Value; + const OUString& rAttrValue = fastAttribs[i].Value; sal_Int32 nToken = fastAttribs[i].Token; const OUString& rAttrNamespacePrefix = CallbackDocumentHandler::getNamespacePrefixFromToken( nToken ); OUString sAttrName = CallbackDocumentHandler::getNameFromToken( nToken ); if ( !rAttrNamespacePrefix.isEmpty() ) - sAttrName = rAttrNamespacePrefix + ":" + sAttrName; + sAttrName = rAttrNamespacePrefix + aNamespaceSeparator + sAttrName; rAttrList->AddAttribute( sAttrName, "CDATA", rAttrValue ); } @@ -244,35 +246,28 @@ void SAL_CALL CallbackDocumentHandler::startUnknownElement( const OUString& Name len = unknownAttribs.getLength(); for (sal_uInt16 i = 0; i < len; i++) { - OUString& rAttrValue = unknownAttribs[i].Value; - OUString sAttrName = unknownAttribs[i].Name; - OUString& rAttrNamespacePrefix = unknownAttribs[i].NamespaceURL; - if ( !rAttrNamespacePrefix.isEmpty() ) - sAttrName = rAttrNamespacePrefix + ":" + sAttrName; + const OUString& rAttrValue = unknownAttribs[i].Value; + const OUString& rAttrName = unknownAttribs[i].Name; - rAttrList->AddAttribute( sAttrName, "CDATA", rAttrValue ); + rAttrList->AddAttribute( rAttrName, "CDATA", rAttrValue ); } - m_xDocumentHandler->startElement( elementName, rAttrList.get() ); + m_xDocumentHandler->startElement( Name, rAttrList.get() ); } } void SAL_CALL CallbackDocumentHandler::endFastElement( sal_Int32 nElement ) { - endUnknownElement( CallbackDocumentHandler::getNamespacePrefixFromToken( nElement ), - CallbackDocumentHandler::getNameFromToken( nElement ) ); + const OUString& rPrefix = CallbackDocumentHandler::getNamespacePrefixFromToken( nElement ); + const OUString& rLocalName = CallbackDocumentHandler::getNameFromToken( nElement ); + endUnknownElement( aDefaultNamespace, (rPrefix.isEmpty())? rLocalName : rPrefix + aNamespaceSeparator + rLocalName ); } -void SAL_CALL CallbackDocumentHandler::endUnknownElement( const OUString& Namespace, const OUString& Name ) +void SAL_CALL CallbackDocumentHandler::endUnknownElement( const OUString& /*Namespace*/, const OUString& Name ) { if ( m_xDocumentHandler.is() ) { - OUString elementName; - if ( !Namespace.isEmpty() ) - elementName = Namespace + ":" + Name; - else - elementName = Name; - m_xDocumentHandler->endElement( elementName ); + m_xDocumentHandler->endElement( Name ); } } |