summaryrefslogtreecommitdiff
path: root/sc/source/filter/xml/xmlfilti.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/filter/xml/xmlfilti.cxx')
-rw-r--r--sc/source/filter/xml/xmlfilti.cxx75
1 files changed, 36 insertions, 39 deletions
diff --git a/sc/source/filter/xml/xmlfilti.cxx b/sc/source/filter/xml/xmlfilti.cxx
index 43c8296e3d95..944b64834a3d 100644
--- a/sc/source/filter/xml/xmlfilti.cxx
+++ b/sc/source/filter/xml/xmlfilti.cxx
@@ -513,11 +513,10 @@ void ScXMLSetItemContext::EndElement()
}
ScXMLDPFilterContext::ScXMLDPFilterContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pTempDataPilotTableContext) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotTable(pTempDataPilotTableContext),
aFilterFields(),
eSearchType(utl::SearchParam::SearchType::Normal),
@@ -531,46 +530,44 @@ ScXMLDPFilterContext::ScXMLDPFilterContext( ScXMLImport& rImport,
{
ScDocument* pDoc(GetScImport().GetDocument());
- sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0);
- const SvXMLTokenMap& rAttrTokenMap(GetScImport().GetFilterAttrTokenMap());
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName ));
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_FILTER_ATTR_TARGET_RANGE_ADDRESS :
+ switch (aIter.getToken())
{
- ScRange aScRange;
- sal_Int32 nOffset(0);
- if (ScRangeStringConverter::GetRangeFromString( aScRange, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
+ case XML_ELEMENT( TABLE, XML_TARGET_RANGE_ADDRESS ):
{
- aOutputPosition = aScRange.aStart;
- bCopyOutputData = true;
+ ScRange aScRange;
+ sal_Int32 nOffset(0);
+ if (ScRangeStringConverter::GetRangeFromString( aScRange, aIter.toString(), pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
+ {
+ aOutputPosition = aScRange.aStart;
+ bCopyOutputData = true;
+ }
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_CONDITION_SOURCE_RANGE_ADDRESS ):
+ {
+ sal_Int32 nOffset(0);
+ if(ScRangeStringConverter::GetRangeFromString( aConditionSourceRangeAddress, aIter.toString(), pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
+ bConditionSourceRange = true;
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_CONDITION_SOURCE ):
+ {
+ // not supported by StarOffice
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_DISPLAY_DUPLICATES ):
+ {
+ bSkipDuplicates = !IsXMLToken(aIter, XML_TRUE);
+ }
+ break;
}
- }
- break;
- case XML_TOK_FILTER_ATTR_CONDITION_SOURCE_RANGE_ADDRESS :
- {
- sal_Int32 nOffset(0);
- if(ScRangeStringConverter::GetRangeFromString( aConditionSourceRangeAddress, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
- bConditionSourceRange = true;
- }
- break;
- case XML_TOK_FILTER_ATTR_CONDITION_SOURCE :
- {
- // not supported by StarOffice
- }
- break;
- case XML_TOK_FILTER_ATTR_DISPLAY_DUPLICATES :
- {
- bSkipDuplicates = !IsXMLToken(sValue, XML_TRUE);
- }
- break;
}
}
}
@@ -614,7 +611,7 @@ SvXMLImportContext *ScXMLDPFilterContext::CreateChildContext( sal_uInt16 nPrefix
return pContext;
}
-void ScXMLDPFilterContext::EndElement()
+void SAL_CALL ScXMLDPFilterContext::endFastElement( sal_Int32 /*nElement*/ )
{
aFilterFields.eSearchType = eSearchType;
aFilterFields.bCaseSens = bIsCaseSensitive;