diff options
Diffstat (limited to 'sc/source/filter/xml/xmlfilti.cxx')
-rw-r--r-- | sc/source/filter/xml/xmlfilti.cxx | 75 |
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; |