summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorMohammed Abdul Azeem <azeemmysore@gmail.com>2017-12-24 23:40:39 +0530
committerMichael Meeks <michael.meeks@collabora.com>2018-01-04 12:44:39 +0100
commitbb59a80ee6000d3922fa95262f67e291fd9d8ee2 (patch)
tree3b6b4c2ba1e589b67f59e118b752f00010bec238 /xmloff
parent2dd45c0c62b3ef3d8057b3fc70af24ae11a3d01d (diff)
Modifying the impl. of startUnknownElement of FastParser:
Modifying it to emit the namespace URI instead of prefix and qualified name instead of local name. This will be useful for handling arbitrary elements in the fast contexts. Change-Id: I0f150b862574612e97491f6c335f3f4c9966da0a Reviewed-on: https://gerrit.libreoffice.org/47055 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Diffstat (limited to 'xmloff')
-rw-r--r--xmloff/source/core/xmlictxt.cxx41
-rw-r--r--xmloff/source/core/xmlimp.cxx2
2 files changed, 15 insertions, 28 deletions
diff --git a/xmloff/source/core/xmlictxt.cxx b/xmloff/source/core/xmlictxt.cxx
index a00539afce6b..b0494250316f 100644
--- a/xmloff/source/core/xmlictxt.cxx
+++ b/xmloff/source/core/xmlictxt.cxx
@@ -70,15 +70,14 @@ void SvXMLImportContext::Characters( const OUString& )
void SAL_CALL SvXMLImportContext::startFastElement(sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
{
mrImport.isFastContext = false;
- startUnknownElement( SvXMLImport::getNamespacePrefixFromToken( nElement ),
- SvXMLImport::getNameFromToken( nElement ), Attribs );
+ const OUString& rPrefix = SvXMLImport::getNamespacePrefixFromToken( nElement );
+ const OUString& rLocalName = SvXMLImport::getNameFromToken( nElement );
+ startUnknownElement( SvXMLImport::aDefaultNamespace, (rPrefix.isEmpty())? rLocalName : rPrefix + SvXMLImport::aNamespaceSeparator + rLocalName, Attribs );
}
-void SAL_CALL SvXMLImportContext::startUnknownElement(const OUString & rPrefix, const OUString & rLocalName,
+void SAL_CALL SvXMLImportContext::startUnknownElement(const OUString & /*rNamespace*/, const OUString & rElementName,
const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
{
- OUString elementName;
-
if ( mrImport.maAttrList.is() )
mrImport.maAttrList->Clear();
else
@@ -86,11 +85,6 @@ void SAL_CALL SvXMLImportContext::startUnknownElement(const OUString & rPrefix,
mrImport.maNamespaceHandler->addNSDeclAttributes( mrImport.maAttrList );
- if ( !rPrefix.isEmpty() )
- elementName = rPrefix + ":" + rLocalName;
- else
- elementName = rLocalName;
-
if ( Attribs.is() )
{
sax_fastparser::FastAttributeList *pAttribList =
@@ -102,7 +96,7 @@ void SAL_CALL SvXMLImportContext::startUnknownElement(const OUString & rPrefix,
const OUString& rAttrNamespacePrefix = SvXMLImport::getNamespacePrefixFromToken( nToken );
OUString sAttrName = SvXMLImport::getNameFromToken( nToken );
if ( !rAttrNamespacePrefix.isEmpty() )
- sAttrName = rAttrNamespacePrefix + ":" + sAttrName;
+ sAttrName = rAttrNamespacePrefix + SvXMLImport::aNamespaceSeparator + sAttrName;
mrImport.maAttrList->AddAttribute( sAttrName, "CDATA", it.toString() );
}
@@ -112,33 +106,24 @@ void SAL_CALL SvXMLImportContext::startUnknownElement(const OUString & rPrefix,
for ( sal_Int32 i = 0; i < len; i++ )
{
const OUString& rAttrValue = unknownAttribs[i].Value;
- OUString sAttrName = unknownAttribs[i].Name;
- const OUString& rAttrNamespacePrefix = unknownAttribs[i].NamespaceURL;
- if ( !rAttrNamespacePrefix.isEmpty() )
- sAttrName = rAttrNamespacePrefix + ":" + sAttrName;
-
- mrImport.maAttrList->AddAttribute( sAttrName, "CDATA", rAttrValue );
+ const OUString& rAttrName = unknownAttribs[i].Name;
+ mrImport.maAttrList->AddAttribute( rAttrName, "CDATA", rAttrValue );
}
}
-
- mrImport.startElement( elementName, mrImport.maAttrList.get() );
+ mrImport.startElement( rElementName, mrImport.maAttrList.get() );
}
void SAL_CALL SvXMLImportContext::endFastElement(sal_Int32 nElement)
{
mrImport.isFastContext = false;
- endUnknownElement( SvXMLImport::getNamespacePrefixFromToken( nElement ),
- SvXMLImport::getNameFromToken( nElement ) );
+ const OUString& rPrefix = SvXMLImport::getNamespacePrefixFromToken( nElement );
+ const OUString& rLocalName = SvXMLImport::getNameFromToken( nElement );
+ endUnknownElement( SvXMLImport::aDefaultNamespace, (rPrefix.isEmpty())? rLocalName : rPrefix + SvXMLImport::aNamespaceSeparator + rLocalName );
}
-void SAL_CALL SvXMLImportContext::endUnknownElement (const OUString & rPrefix, const OUString & rLocalName)
+void SAL_CALL SvXMLImportContext::endUnknownElement (const OUString & /*rNamespace*/, const OUString & rElementName)
{
- OUString elementName;
- if ( !rPrefix.isEmpty() )
- elementName = rPrefix + ":" + rLocalName;
- else
- elementName = rLocalName;
- mrImport.endElement( elementName );
+ mrImport.endElement( rElementName );
}
uno::Reference< xml::sax::XFastContextHandler > SAL_CALL SvXMLImportContext::createFastChildContext
diff --git a/xmloff/source/core/xmlimp.cxx b/xmloff/source/core/xmlimp.cxx
index 0718e7af65e6..c8a2417603c9 100644
--- a/xmloff/source/core/xmlimp.cxx
+++ b/xmloff/source/core/xmlimp.cxx
@@ -76,6 +76,8 @@ using namespace ::xmloff::token;
css::uno::Reference< css::xml::sax::XFastTokenHandler > SvXMLImport::xTokenHandler( new FastTokenHandler() );
std::unordered_map< sal_Int32, std::pair< OUString, OUString > > SvXMLImport::aNamespaceMap;
+const OUString SvXMLImport::aDefaultNamespace = OUString("");
+const OUString SvXMLImport::aNamespaceSeparator = OUString(":");
bool SvXMLImport::bIsNSMapsInitialized = false;
class SvXMLImportEventListener : public cppu::WeakImplHelper< css::lang::XEventListener >