oox/source/core/contexthandler2.cxx                     |    2 
 oox/source/core/filterdetect.cxx                        |   12 ++--
 oox/source/core/relationshandler.cxx                    |    6 +-
 oox/source/drawingml/chart/chartspacefragment.cxx       |    4 -
 oox/source/drawingml/chart/modelbase.cxx                |    2 
 oox/source/drawingml/colorchoicecontext.cxx             |    2 
 oox/source/drawingml/customshapegeometry.cxx            |   24 ++++----
 oox/source/drawingml/diagram/constraintlistcontext.cxx  |    4 -
 oox/source/drawingml/diagram/datamodelcontext.cxx       |   20 +++----
 oox/source/drawingml/diagram/diagramfragmenthandler.cxx |    4 -
 oox/source/drawingml/diagram/rulelistcontext.cxx        |    2 
 oox/source/drawingml/effectpropertiescontext.cxx        |    2 
 oox/source/drawingml/graphicshapecontext.cxx            |    4 -
 oox/source/drawingml/linepropertiescontext.cxx          |    4 -
 oox/source/drawingml/misccontexts.cxx                   |    6 +-
 oox/source/drawingml/textbodypropertiescontext.cxx      |    4 -
 oox/source/drawingml/textcharacterpropertiescontext.cxx |   16 ++---
 oox/source/drawingml/textfont.cxx                       |    4 -
 oox/source/ole/axcontrolfragment.cxx                    |   10 +--
 oox/source/ppt/animvariantcontext.cxx                   |    2 
 oox/source/ppt/buildlistcontext.cxx                     |    2 
 oox/source/ppt/conditioncontext.cxx                     |    2 
 oox/source/ppt/customshowlistcontext.cxx                |    2 
 oox/source/ppt/presentationfragmenthandler.cxx          |   14 ++---
 oox/source/ppt/slidefragmenthandler.cxx                 |   24 ++++----
 oox/source/ppt/slidetransitioncontext.cxx               |    2 
 oox/source/ppt/timeanimvaluecontext.cxx                 |    4 -
 oox/source/ppt/timetargetelementcontext.cxx             |    8 +-
 oox/source/vml/vmlshapecontext.cxx                      |   44 ++++++++--------
 oox/source/vml/vmltextboxcontext.cxx                    |    2 
 30 files changed, 119 insertions(+), 119 deletions(-)

New commits:
commit 4a99111c4216fcd56d8bccb71c32fa7969448d27
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Mon Aug 1 22:38:28 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Tue Aug 2 10:41:57 2022 +0200

    use more getStringDefaulted
    
    rather than repeatedly constructing an empty OUString parameter
    
    Change-Id: I9ed2826f260f1f551c77e03b26f13a98e277f42f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137685
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/oox/source/core/contexthandler2.cxx 
b/oox/source/core/contexthandler2.cxx
index 1613a3d330cc..93da89b8c043 100644
--- a/oox/source/core/contexthandler2.cxx
+++ b/oox/source/core/contexthandler2.cxx
@@ -272,7 +272,7 @@ bool ContextHandler2Helper::prepareMceContext( sal_Int32 
nElement, const Attribu
             return false;
         default:
             {
-                OUString str = rAttribs.getString( MCE_TOKEN( Ignorable ), 
OUString() );
+                OUString str = rAttribs.getStringDefaulted( MCE_TOKEN( 
Ignorable ));
                 if( !str.isEmpty() )
                 {
                     // Sequence< css::xml::FastAttribute > attrs = 
rAttribs.getFastAttributeList()->getFastAttributes();
diff --git a/oox/source/core/filterdetect.cxx b/oox/source/core/filterdetect.cxx
index 455d9a8b5c19..2e4e64daa16d 100644
--- a/oox/source/core/filterdetect.cxx
+++ b/oox/source/core/filterdetect.cxx
@@ -142,7 +142,7 @@ void SAL_CALL FilterDetectDocHandler::characters( const 
OUString& /*aChars*/ )
 
 void FilterDetectDocHandler::parseRelationship( const AttributeList& rAttribs )
 {
-    OUString aType = rAttribs.getString( XML_Type, OUString() );
+    OUString aType = rAttribs.getStringDefaulted( XML_Type);
 
     // tdf#131936 Remember filter when opening file as 'Office Open XML Text'
     if 
(aType.startsWithIgnoreAsciiCase("http://schemas.openxmlformats.org/officedocument/2006/relationships/metadata/core-properties";))
@@ -163,7 +163,7 @@ void FilterDetectDocHandler::parseRelationship( const 
AttributeList& rAttribs )
          // keep the XUriReference implementation happy )
          Reference< XUriReference > xBase = xFactory->parse( "file:///" );
 
-         Reference< XUriReference > xPart = xFactory->parse(  
rAttribs.getString( XML_Target, OUString() ) );
+         Reference< XUriReference > xPart = xFactory->parse(  
rAttribs.getStringDefaulted( XML_Target) );
          Reference< XUriReference > xAbs = xFactory->makeAbsolute(  xBase, 
xPart, true, RelativeUriExcessParentSegments_RETAIN );
 
          if ( xAbs.is() )
@@ -242,17 +242,17 @@ void FilterDetectDocHandler::parseContentTypesDefault( 
const AttributeList& rAtt
     if( mrFilterName.isEmpty() )
     {
         // check if target path ends with extension
-        OUString aExtension = rAttribs.getString( XML_Extension, OUString() );
+        OUString aExtension = rAttribs.getStringDefaulted( XML_Extension);
         sal_Int32 nExtPos = maTargetPath.getLength() - aExtension.getLength();
         if( (nExtPos > 0) && (maTargetPath[ nExtPos - 1 ] == '.') && 
maTargetPath.match( aExtension, nExtPos ) )
-            mrFilterName = getFilterNameFromContentType( rAttribs.getString( 
XML_ContentType, OUString() ), maFileName );
+            mrFilterName = getFilterNameFromContentType( 
rAttribs.getStringDefaulted( XML_ContentType), maFileName );
     }
 }
 
 void FilterDetectDocHandler::parseContentTypesOverride( const AttributeList& 
rAttribs )
 {
-    if( rAttribs.getString( XML_PartName, OUString() ) == maTargetPath )
-        mrFilterName = getFilterNameFromContentType( rAttribs.getString( 
XML_ContentType, OUString() ), maFileName );
+    if( rAttribs.getStringDefaulted( XML_PartName) == maTargetPath )
+        mrFilterName = getFilterNameFromContentType( 
rAttribs.getStringDefaulted( XML_ContentType), maFileName );
 }
 
 FilterDetect::FilterDetect( const Reference< XComponentContext >& rxContext ) :
diff --git a/oox/source/core/relationshandler.cxx 
b/oox/source/core/relationshandler.cxx
index 90f3ebcef21c..07586cce0db7 100644
--- a/oox/source/core/relationshandler.cxx
+++ b/oox/source/core/relationshandler.cxx
@@ -67,9 +67,9 @@ Reference< XFastContextHandler > 
RelationsFragment::createFastChildContext(
         case PR_TOKEN( Relationship ):
         {
             Relation aRelation;
-            aRelation.maId     = aAttribs.getString( XML_Id, OUString() );
-            aRelation.maType   = aAttribs.getString( XML_Type, OUString() );
-            aRelation.maTarget = aAttribs.getString( XML_Target, OUString() );
+            aRelation.maId     = aAttribs.getStringDefaulted( XML_Id);
+            aRelation.maType   = aAttribs.getStringDefaulted( XML_Type);
+            aRelation.maTarget = aAttribs.getStringDefaulted( XML_Target);
             if( !aRelation.maId.isEmpty() && !aRelation.maType.isEmpty() && 
!aRelation.maTarget.isEmpty() )
             {
                 sal_Int32 nTargetMode = aAttribs.getToken( XML_TargetMode, 
XML_Internal );
diff --git a/oox/source/drawingml/chart/chartspacefragment.cxx 
b/oox/source/drawingml/chart/chartspacefragment.cxx
index aa045d4a5079..7f0a6cd549f9 100644
--- a/oox/source/drawingml/chart/chartspacefragment.cxx
+++ b/oox/source/drawingml/chart/chartspacefragment.cxx
@@ -67,13 +67,13 @@ ContextHandlerRef ChartSpaceFragment::onCreateContext( 
sal_Int32 nElement, const
                 case C_TOKEN( txPr ):
                     return new TextBodyContext( *this, 
mrModel.mxTextProp.create() );
                 case C_TOKEN( userShapes ):
-                    mrModel.maDrawingPath = getFragmentPathFromRelId( 
rAttribs.getString( R_TOKEN( id ), OUString() ) );
+                    mrModel.maDrawingPath = getFragmentPathFromRelId( 
rAttribs.getStringDefaulted( R_TOKEN( id )) );
                     return nullptr;
                 case C_TOKEN( pivotSource ):
                     mrModel.mbPivotChart = true;
                     return nullptr;
                 case C_TOKEN (externalData):
-                    mrModel.maSheetPath = 
getFragmentPathFromRelId(rAttribs.getString(R_TOKEN(id),OUString()));
+                    mrModel.maSheetPath = 
getFragmentPathFromRelId(rAttribs.getStringDefaulted(R_TOKEN(id)));
                     return nullptr;
             }
         break;
diff --git a/oox/source/drawingml/chart/modelbase.cxx 
b/oox/source/drawingml/chart/modelbase.cxx
index b897d9306d76..04fb08b0d7e3 100644
--- a/oox/source/drawingml/chart/modelbase.cxx
+++ b/oox/source/drawingml/chart/modelbase.cxx
@@ -32,7 +32,7 @@ NumberFormat::NumberFormat() :
 void NumberFormat::setAttributes( const AttributeList& rAttribs )
 {
     mbSourceLinked = rAttribs.getBool( XML_sourceLinked, true);
-    maFormatCode = rAttribs.getString( XML_formatCode, OUString() );
+    maFormatCode = rAttribs.getStringDefaulted( XML_formatCode);
 }
 
 LayoutModel::LayoutModel() :
diff --git a/oox/source/drawingml/colorchoicecontext.cxx 
b/oox/source/drawingml/colorchoicecontext.cxx
index 4029b5750ccb..f63dd88d5f41 100644
--- a/oox/source/drawingml/colorchoicecontext.cxx
+++ b/oox/source/drawingml/colorchoicecontext.cxx
@@ -104,7 +104,7 @@ void ColorValueContext::onStartElement( const 
AttributeList& rAttribs )
         case A_TOKEN( shade ):
         case A_TOKEN( tint ):
         {
-            OUString aValue = rAttribs.getString( XML_val, OUString() );
+            OUString aValue = rAttribs.getStringDefaulted( XML_val);
             sal_Int32 nVal = 0;
             if (aValue.endsWith("%"))
             {
diff --git a/oox/source/drawingml/customshapegeometry.cxx 
b/oox/source/drawingml/customshapegeometry.cxx
index 193d08359cc2..01b86b4eea1b 100644
--- a/oox/source/drawingml/customshapegeometry.cxx
+++ b/oox/source/drawingml/customshapegeometry.cxx
@@ -674,27 +674,27 @@ XYAdjustHandleContext::XYAdjustHandleContext( 
ContextHandler2Helper const & rPar
 {
     if ( rAttribs.hasAttribute( XML_gdRefX ) )
     {
-        mrAdjustHandle.gdRef1 = GetGeomGuideName( rAttribs.getString( 
XML_gdRefX, "" ) );
+        mrAdjustHandle.gdRef1 = GetGeomGuideName( rAttribs.getStringDefaulted( 
XML_gdRefX) );
     }
     if ( rAttribs.hasAttribute( XML_minX ) )
     {
-        mrAdjustHandle.min1 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getString( XML_minX, "" ) );
+        mrAdjustHandle.min1 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getStringDefaulted( XML_minX) );
     }
     if ( rAttribs.hasAttribute( XML_maxX ) )
     {
-        mrAdjustHandle.max1 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getString( XML_maxX, "" ) );
+        mrAdjustHandle.max1 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getStringDefaulted( XML_maxX) );
     }
     if ( rAttribs.hasAttribute( XML_gdRefY ) )
     {
-        mrAdjustHandle.gdRef2 = GetGeomGuideName( rAttribs.getString( 
XML_gdRefY, "" ) );
+        mrAdjustHandle.gdRef2 = GetGeomGuideName( rAttribs.getStringDefaulted( 
XML_gdRefY) );
     }
     if ( rAttribs.hasAttribute( XML_minY ) )
     {
-        mrAdjustHandle.min2 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getString( XML_minY, "" ) );
+        mrAdjustHandle.min2 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getStringDefaulted( XML_minY) );
     }
     if ( rAttribs.hasAttribute( XML_maxY ) )
     {
-        mrAdjustHandle.max2 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getString( XML_maxY, "" ) );
+        mrAdjustHandle.max2 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getStringDefaulted( XML_maxY) );
     }
 }
 
@@ -729,28 +729,28 @@ PolarAdjustHandleContext::PolarAdjustHandleContext( 
ContextHandler2Helper const
     if ( rAttribs.hasAttribute( XML_gdRefR ) )
     {
         mrAdjustHandle.polar = true ;
-        mrAdjustHandle.gdRef1 = GetGeomGuideName( rAttribs.getString( 
XML_gdRefR, "" ) );
+        mrAdjustHandle.gdRef1 = GetGeomGuideName( rAttribs.getStringDefaulted( 
XML_gdRefR) );
     }
     if ( rAttribs.hasAttribute( XML_minR ) )
     {
-        mrAdjustHandle.min1 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getString( XML_minR, "" ) );
+        mrAdjustHandle.min1 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getStringDefaulted( XML_minR) );
     }
     if ( rAttribs.hasAttribute( XML_maxR ) )
     {
-        mrAdjustHandle.max1 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getString( XML_maxR, "" ) );
+        mrAdjustHandle.max1 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getStringDefaulted( XML_maxR) );
     }
     if ( rAttribs.hasAttribute( XML_gdRefAng ) )
     {
         mrAdjustHandle.polar = true ;
-        mrAdjustHandle.gdRef2 = GetGeomGuideName( rAttribs.getString( 
XML_gdRefAng, "" ) );
+        mrAdjustHandle.gdRef2 = GetGeomGuideName( rAttribs.getStringDefaulted( 
XML_gdRefAng) );
     }
     if ( rAttribs.hasAttribute( XML_minAng ) )
     {
-        mrAdjustHandle.min2 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getString( XML_minAng, "" ) );
+        mrAdjustHandle.min2 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getStringDefaulted( XML_minAng) );
     }
     if ( rAttribs.hasAttribute( XML_maxAng ) )
     {
-        mrAdjustHandle.max2 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getString( XML_maxAng, "" ) );
+        mrAdjustHandle.max2 = GetAdjCoordinate( mrCustomShapeProperties, 
rAttribs.getStringDefaulted( XML_maxAng) );
     }
 }
 
diff --git a/oox/source/drawingml/diagram/constraintlistcontext.cxx 
b/oox/source/drawingml/diagram/constraintlistcontext.cxx
index cc1f13026342..9233c9235c12 100644
--- a/oox/source/drawingml/diagram/constraintlistcontext.cxx
+++ b/oox/source/drawingml/diagram/constraintlistcontext.cxx
@@ -54,11 +54,11 @@ ConstraintListContext::onCreateContext( ::sal_Int32 
aElement,
 
         Constraint& rConstraint = pNode->getConstraint();
         rConstraint.mnFor = rAttribs.getToken( XML_for, XML_none );
-        rConstraint.msForName = rAttribs.getString( XML_forName, "" );
+        rConstraint.msForName = rAttribs.getStringDefaulted( XML_forName);
         rConstraint.mnPointType = rAttribs.getToken( XML_ptType, XML_none );
         rConstraint.mnType = rAttribs.getToken( XML_type, XML_none );
         rConstraint.mnRefFor = rAttribs.getToken( XML_refFor, XML_none );
-        rConstraint.msRefForName = rAttribs.getString( XML_refForName, "" );
+        rConstraint.msRefForName = rAttribs.getStringDefaulted( 
XML_refForName);
         rConstraint.mnRefType = rAttribs.getToken( XML_refType, XML_none );
         rConstraint.mnRefPointType = rAttribs.getToken( XML_refPtType, 
XML_none );
         rConstraint.mfFactor = rAttribs.getDouble( XML_fact, 1.0 );
diff --git a/oox/source/drawingml/diagram/datamodelcontext.cxx 
b/oox/source/drawingml/diagram/datamodelcontext.cxx
index 1c060cb90665..d8629e2f9aa4 100644
--- a/oox/source/drawingml/diagram/datamodelcontext.cxx
+++ b/oox/source/drawingml/diagram/datamodelcontext.cxx
@@ -148,16 +148,16 @@ public:
         ContextHandler2( rParent ),
         mrPoint( rPoint )
     {
-        mrPoint.msColorTransformCategoryId = rAttribs.getString( XML_csCatId, 
"" );
-        mrPoint.msColorTransformTypeId = rAttribs.getString( XML_csTypeId, "" 
);
-        mrPoint.msLayoutCategoryId = rAttribs.getString( XML_loCatId, "" );
-        mrPoint.msLayoutTypeId = rAttribs.getString( XML_loTypeId, "" );
-        mrPoint.msPlaceholderText = rAttribs.getString( XML_phldrT, "" );
-        mrPoint.msPresentationAssociationId = rAttribs.getString( 
XML_presAssocID, "" );
-        mrPoint.msPresentationLayoutName = rAttribs.getString( XML_presName, 
"" );
-        mrPoint.msPresentationLayoutStyleLabel = rAttribs.getString( 
XML_presStyleLbl, "" );
-        mrPoint.msQuickStyleCategoryId = rAttribs.getString( XML_qsCatId, "" );
-        mrPoint.msQuickStyleTypeId = rAttribs.getString( XML_qsTypeId, "" );
+        mrPoint.msColorTransformCategoryId = rAttribs.getStringDefaulted( 
XML_csCatId);
+        mrPoint.msColorTransformTypeId = rAttribs.getStringDefaulted( 
XML_csTypeId);
+        mrPoint.msLayoutCategoryId = rAttribs.getStringDefaulted( XML_loCatId);
+        mrPoint.msLayoutTypeId = rAttribs.getStringDefaulted( XML_loTypeId);
+        mrPoint.msPlaceholderText = rAttribs.getStringDefaulted( XML_phldrT);
+        mrPoint.msPresentationAssociationId = rAttribs.getStringDefaulted( 
XML_presAssocID);
+        mrPoint.msPresentationLayoutName = rAttribs.getStringDefaulted( 
XML_presName);
+        mrPoint.msPresentationLayoutStyleLabel = rAttribs.getStringDefaulted( 
XML_presStyleLbl);
+        mrPoint.msQuickStyleCategoryId = rAttribs.getStringDefaulted( 
XML_qsCatId);
+        mrPoint.msQuickStyleTypeId = rAttribs.getStringDefaulted( 
XML_qsTypeId);
 
         mrPoint.mnCustomAngle = rAttribs.getInteger( XML_custAng, -1 );
         mrPoint.mnPercentageNeighbourWidth = rAttribs.getInteger( 
XML_custLinFactNeighborX, -1 );
diff --git a/oox/source/drawingml/diagram/diagramfragmenthandler.cxx 
b/oox/source/drawingml/diagram/diagramfragmenthandler.cxx
index 8ff4af7f0bfb..02f406e40105 100644
--- a/oox/source/drawingml/diagram/diagramfragmenthandler.cxx
+++ b/oox/source/drawingml/diagram/diagramfragmenthandler.cxx
@@ -157,7 +157,7 @@ void DiagramQStylesFragmentHandler::onStartElement( const 
AttributeList& rAttrib
 {
     if( getCurrentElement() == DGM_TOKEN( styleLbl ) )
     {
-        maStyleName = rAttribs.getString( XML_name, OUString() );
+        maStyleName = rAttribs.getStringDefaulted( XML_name);
         maStyleEntry = mrStylesMap[maStyleName];
     }
 }
@@ -218,7 +218,7 @@ void ColorFragmentHandler::onStartElement( const 
AttributeList& rAttribs )
 {
     if( getCurrentElement() == DGM_TOKEN(styleLbl) )
     {
-        maColorName = rAttribs.getString( XML_name, OUString() );
+        maColorName = rAttribs.getStringDefaulted( XML_name);
         maColorEntry = mrColorsMap[maColorName];
     }
 }
diff --git a/oox/source/drawingml/diagram/rulelistcontext.cxx 
b/oox/source/drawingml/diagram/rulelistcontext.cxx
index 76518ca9e662..2a1c450d0196 100644
--- a/oox/source/drawingml/diagram/rulelistcontext.cxx
+++ b/oox/source/drawingml/diagram/rulelistcontext.cxx
@@ -44,7 +44,7 @@ core::ContextHandlerRef 
RuleListContext::onCreateContext(sal_Int32 nElement,
             LayoutAtom::connect(mpNode, pNode);
 
             Rule& rRule = pNode->getRule();
-            rRule.msForName = rAttribs.getString(XML_forName, "");
+            rRule.msForName = rAttribs.getStringDefaulted(XML_forName);
             break;
         }
         default:
diff --git a/oox/source/drawingml/effectpropertiescontext.cxx 
b/oox/source/drawingml/effectpropertiescontext.cxx
index ea972c742ea9..23793cdc26dc 100644
--- a/oox/source/drawingml/effectpropertiescontext.cxx
+++ b/oox/source/drawingml/effectpropertiescontext.cxx
@@ -36,7 +36,7 @@ EffectPropertiesContext::~EffectPropertiesContext()
 void EffectPropertiesContext::saveUnsupportedAttribs( Effect& rEffect, const 
AttributeList& rAttribs )
 {
     if( rAttribs.hasAttribute( XML_algn ) )
-        rEffect.maAttribs["algn"] <<= rAttribs.getString( XML_algn, "" );
+        rEffect.maAttribs["algn"] <<= rAttribs.getStringDefaulted( XML_algn);
     if( rAttribs.hasAttribute( XML_blurRad ) )
         rEffect.maAttribs["blurRad"] <<= rAttribs.getInteger( XML_blurRad, 0 );
     if( rAttribs.hasAttribute( XML_dir ) )
diff --git a/oox/source/drawingml/graphicshapecontext.cxx 
b/oox/source/drawingml/graphicshapecontext.cxx
index 1d0909b3d5e4..6e4379c2e1ed 100644
--- a/oox/source/drawingml/graphicshapecontext.cxx
+++ b/oox/source/drawingml/graphicshapecontext.cxx
@@ -211,7 +211,7 @@ ContextHandlerRef 
OleObjectGraphicDataContext::onCreateContext( sal_Int32 nEleme
         case PPT_TOKEN( oleObj ):
         {
             mrOleObjectInfo.maShapeId = rAttribs.getXString( XML_spid, 
OUString() );
-            const Relation* pRelation = getRelations().getRelationFromRelId( 
rAttribs.getString( R_TOKEN( id ), OUString() ) );
+            const Relation* pRelation = getRelations().getRelationFromRelId( 
rAttribs.getStringDefaulted( R_TOKEN( id )) );
             OSL_ENSURE( pRelation, 
"OleObjectGraphicDataContext::createFastChildContext - missing relation for OLE 
object" );
             if( pRelation )
             {
@@ -330,7 +330,7 @@ ContextHandlerRef ChartGraphicDataContext::onCreateContext( 
::sal_Int32 nElement
 {
     if( nElement == C_TOKEN( chart ) )
     {
-        mrChartShapeInfo.maFragmentPath = getFragmentPathFromRelId( 
rAttribs.getString( R_TOKEN( id ), OUString() ) );
+        mrChartShapeInfo.maFragmentPath = getFragmentPathFromRelId( 
rAttribs.getStringDefaulted( R_TOKEN( id )) );
     }
     return nullptr;
 }
diff --git a/oox/source/drawingml/linepropertiescontext.cxx 
b/oox/source/drawingml/linepropertiescontext.cxx
index 19f713421c63..0ee0e8727bcb 100644
--- a/oox/source/drawingml/linepropertiescontext.cxx
+++ b/oox/source/drawingml/linepropertiescontext.cxx
@@ -74,7 +74,7 @@ ContextHandlerRef LinePropertiesContext::onCreateContext( 
sal_Int32 nElement, co
             // The code below takes care of both scenarios by converting to 
'1000th of a percent' always
             OUString aStr;
             sal_Int32 nDash = 0;
-            aStr = rAttribs.getString( XML_d, "" );
+            aStr = rAttribs.getStringDefaulted( XML_d);
             if ( aStr.endsWith("%") )
             {
                 // Ends with a '%'
@@ -91,7 +91,7 @@ ContextHandlerRef LinePropertiesContext::onCreateContext( 
sal_Int32 nElement, co
             }
 
             sal_Int32 nSp = 0;
-            aStr = rAttribs.getString( XML_sp, "" );
+            aStr = rAttribs.getStringDefaulted( XML_sp);
             if ( aStr.endsWith("%") )
             {
                 // Ends with a '%'
diff --git a/oox/source/drawingml/misccontexts.cxx 
b/oox/source/drawingml/misccontexts.cxx
index 9e1fa739400c..ceeeca3d5c62 100644
--- a/oox/source/drawingml/misccontexts.cxx
+++ b/oox/source/drawingml/misccontexts.cxx
@@ -147,7 +147,7 @@ BlipContext::BlipContext( ContextHandler2Helper const & 
rParent,
     if( rAttribs.hasAttribute( R_TOKEN( embed ) ) )
     {
         // internal picture URL
-        OUString aFragmentPath = getFragmentPathFromRelId( rAttribs.getString( 
R_TOKEN( embed ), OUString() ) );
+        OUString aFragmentPath = getFragmentPathFromRelId( 
rAttribs.getStringDefaulted( R_TOKEN( embed )) );
         if (!aFragmentPath.isEmpty())
             mrBlipProps.mxFillGraphic = 
getFilter().getGraphicHelper().importEmbeddedGraphic( aFragmentPath );
     }
@@ -158,7 +158,7 @@ BlipContext::BlipContext( ContextHandler2Helper const & 
rParent,
         // we will embed this link, this is better than just doing nothing...
         // TODO: import this graphic as real link, but this requires some
         // code rework.
-        OUString aRelId = rAttribs.getString( R_TOKEN( link ), OUString() );
+        OUString aRelId = rAttribs.getStringDefaulted( R_TOKEN( link ));
         OUString aTargetLink = getFilter().getAbsoluteUrl( 
getRelations().getExternalTargetFromRelId( aRelId ) );
         GraphicExternalLink aLink(aTargetLink);
         Graphic aGraphic(aLink);
@@ -340,7 +340,7 @@ ContextHandlerRef ArtisticEffectContext::onCreateContext(
     {
         if( rAttribs.hasAttribute( R_TOKEN( embed ) ) )
         {
-            OUString aFragmentPath = getFragmentPathFromRelId( 
rAttribs.getString( R_TOKEN( embed ), OUString() ) );
+            OUString aFragmentPath = getFragmentPathFromRelId( 
rAttribs.getStringDefaulted( R_TOKEN( embed )) );
             if( !aFragmentPath.isEmpty() )
             {
                 getFilter().importBinaryData( 
maEffect.mrOleObjectInfo.maEmbeddedData, aFragmentPath );
diff --git a/oox/source/drawingml/textbodypropertiescontext.cxx 
b/oox/source/drawingml/textbodypropertiescontext.cxx
index fa3314ada35a..bf2feb132e0a 100644
--- a/oox/source/drawingml/textbodypropertiescontext.cxx
+++ b/oox/source/drawingml/textbodypropertiescontext.cxx
@@ -83,9 +83,9 @@ TextBodyPropertiesContext::TextBodyPropertiesContext( 
ContextHandler2Helper cons
     mrTextBodyProp.maPropertyMap.setProperty(PROP_FromWordArt, bFromWordArt);
 
   // ST_TextHorzOverflowType
-    mrTextBodyProp.msHorzOverflow = rAttribs.getString(XML_horzOverflow, "");
+    mrTextBodyProp.msHorzOverflow = 
rAttribs.getStringDefaulted(XML_horzOverflow);
     // ST_TextVertOverflowType
-    mrTextBodyProp.msVertOverflow = rAttribs.getString(XML_vertOverflow, "");
+    mrTextBodyProp.msVertOverflow = 
rAttribs.getStringDefaulted(XML_vertOverflow);
 
     // ST_TextColumnCount
     if (const sal_Int32 nColumns = rAttribs.getInteger(XML_numCol, 0); 
nColumns > 0)
diff --git a/oox/source/drawingml/textcharacterpropertiescontext.cxx 
b/oox/source/drawingml/textcharacterpropertiescontext.cxx
index d92653bb0c15..c5cf346de199 100644
--- a/oox/source/drawingml/textcharacterpropertiescontext.cxx
+++ b/oox/source/drawingml/textcharacterpropertiescontext.cxx
@@ -168,33 +168,33 @@ ContextHandlerRef 
TextCharacterPropertiesContext::onCreateContext( sal_Int32 aEl
         case W_TOKEN( rFonts ):
             if( rAttribs.hasAttribute(W_TOKEN(ascii)) )
             {
-                
mrTextCharacterProperties.maLatinFont.setAttributes(rAttribs.getString(W_TOKEN(ascii),
 OUString()));
+                
mrTextCharacterProperties.maLatinFont.setAttributes(rAttribs.getStringDefaulted(W_TOKEN(ascii)));
             }
             if (rAttribs.hasAttribute(W_TOKEN(asciiTheme)))
             {
-                
mrTextCharacterProperties.maLatinThemeFont.setAttributes(rAttribs.getString(W_TOKEN(asciiTheme),
 OUString()));
+                
mrTextCharacterProperties.maLatinThemeFont.setAttributes(rAttribs.getStringDefaulted(W_TOKEN(asciiTheme)));
             }
             if( rAttribs.hasAttribute(W_TOKEN(cs)) )
             {
-                
mrTextCharacterProperties.maComplexFont.setAttributes(rAttribs.getString(W_TOKEN(cs),
 OUString()));
+                
mrTextCharacterProperties.maComplexFont.setAttributes(rAttribs.getStringDefaulted(W_TOKEN(cs)));
             }
             if (rAttribs.hasAttribute(W_TOKEN(cstheme)))
             {
-                
mrTextCharacterProperties.maComplexThemeFont.setAttributes(rAttribs.getString(W_TOKEN(cstheme),
 OUString()));
+                
mrTextCharacterProperties.maComplexThemeFont.setAttributes(rAttribs.getStringDefaulted(W_TOKEN(cstheme)));
             }
             if( rAttribs.hasAttribute(W_TOKEN(eastAsia)) )
             {
-                
mrTextCharacterProperties.maAsianFont.setAttributes(rAttribs.getString(W_TOKEN(eastAsia),
 OUString()));
+                
mrTextCharacterProperties.maAsianFont.setAttributes(rAttribs.getStringDefaulted(W_TOKEN(eastAsia)));
             }
             if (rAttribs.hasAttribute(W_TOKEN(eastAsiaTheme)))
             {
-                
mrTextCharacterProperties.maAsianThemeFont.setAttributes(rAttribs.getString(W_TOKEN(eastAsiaTheme),
 OUString()));
+                
mrTextCharacterProperties.maAsianThemeFont.setAttributes(rAttribs.getStringDefaulted(W_TOKEN(eastAsiaTheme)));
             }
             break;
         case W_TOKEN( u ):
         {
             // If you add here, check if it is in drawingmltypes.cxx 113.
-            auto attrib = rAttribs.getString(W_TOKEN(val), OUString());
+            auto attrib = rAttribs.getStringDefaulted(W_TOKEN(val));
             if (attrib == "single" || attrib == "words") // TODO: implement 
words properly. Now it is a single line.
                 mrTextCharacterProperties.moUnderline = XML_sng;
             else if (attrib == "wavyHeavy")
@@ -305,7 +305,7 @@ ContextHandlerRef 
TextCharacterPropertiesContext::onCreateContext( sal_Int32 aEl
             break;
         }
         case W_TOKEN(lang):
-            mrTextCharacterProperties.moLang = 
rAttribs.getString(W_TOKEN(val), OUString());
+            mrTextCharacterProperties.moLang = 
rAttribs.getStringDefaulted(W_TOKEN(val));
             break;
         case OOX_TOKEN(w14, glow):
         case OOX_TOKEN(w14, shadow):
diff --git a/oox/source/drawingml/textfont.cxx 
b/oox/source/drawingml/textfont.cxx
index 41dd0716a69a..bcfe516893ee 100644
--- a/oox/source/drawingml/textfont.cxx
+++ b/oox/source/drawingml/textfont.cxx
@@ -55,8 +55,8 @@ TextFont::TextFont() :
 
 void TextFont::setAttributes( const AttributeList& rAttribs )
 {
-    maTypeface = rAttribs.getString( XML_typeface, OUString() );
-    maPanose   = rAttribs.getString( XML_panose, OUString() );
+    maTypeface = rAttribs.getStringDefaulted( XML_typeface);
+    maPanose   = rAttribs.getStringDefaulted( XML_panose);
     mnPitch    = rAttribs.getInteger( XML_pitchFamily, 0 );
     mnCharset  = rAttribs.getInteger( XML_charset, WINDOWS_CHARSET_DEFAULT );
 }
diff --git a/oox/source/ole/axcontrolfragment.cxx 
b/oox/source/ole/axcontrolfragment.cxx
index a0f0b109669a..5091af660713 100644
--- a/oox/source/ole/axcontrolfragment.cxx
+++ b/oox/source/ole/axcontrolfragment.cxx
@@ -64,7 +64,7 @@ ContextHandlerRef AxControlPropertyContext::onCreateContext( 
sal_Int32 nElement,
                     case XML_MouseIcon:
                         return this;        // import picture path from 
ax:picture child element
                     default:
-                        mrModel.importProperty( mnPropId, rAttribs.getString( 
AX_TOKEN( value ), OUString() ) );
+                        mrModel.importProperty( mnPropId, 
rAttribs.getStringDefaulted( AX_TOKEN( value )) );
                 }
             }
         break;
@@ -72,7 +72,7 @@ ContextHandlerRef AxControlPropertyContext::onCreateContext( 
sal_Int32 nElement,
         case AX_TOKEN( ocxPr ):
             if( nElement == AX_TOKEN( picture ) )
             {
-                OUString aPicturePath = getFragmentPathFromRelId( 
rAttribs.getString( R_TOKEN( id ), OUString() ) );
+                OUString aPicturePath = getFragmentPathFromRelId( 
rAttribs.getStringDefaulted( R_TOKEN( id )) );
                 if( !aPicturePath.isEmpty() )
                 {
                     BinaryXInputStream aInStrm( getFilter().openInputStream( 
aPicturePath ), true );
@@ -94,7 +94,7 @@ ContextHandlerRef AxControlFragment::onCreateContext( 
sal_Int32 nElement, const
 {
     if( isRootElement() && (nElement == AX_TOKEN( ocx )) )
     {
-        OUString aClassId = rAttribs.getString( AX_TOKEN( classid ), 
OUString() );
+        OUString aClassId = rAttribs.getStringDefaulted( AX_TOKEN( classid ));
         switch( rAttribs.getToken( AX_TOKEN( persistence ), XML_TOKEN_INVALID 
) )
         {
             case XML_persistPropertyBag:
@@ -104,7 +104,7 @@ ContextHandlerRef AxControlFragment::onCreateContext( 
sal_Int32 nElement, const
 
             case XML_persistStreamInit:
             {
-                OUString aFragmentPath = getFragmentPathFromRelId( 
rAttribs.getString( R_TOKEN( id ), OUString() ) );
+                OUString aFragmentPath = getFragmentPathFromRelId( 
rAttribs.getStringDefaulted( R_TOKEN( id )) );
                 if( !aFragmentPath.isEmpty() )
                 {
                     BinaryXInputStream aInStrm( getFilter().openInputStream( 
aFragmentPath ), true );
@@ -123,7 +123,7 @@ ContextHandlerRef AxControlFragment::onCreateContext( 
sal_Int32 nElement, const
 
             case XML_persistStorage:
             {
-                OUString aFragmentPath = getFragmentPathFromRelId( 
rAttribs.getString( R_TOKEN( id ), OUString() ) );
+                OUString aFragmentPath = getFragmentPathFromRelId( 
rAttribs.getStringDefaulted( R_TOKEN( id )) );
                 if( !aFragmentPath.isEmpty() )
                 {
                     Reference< XInputStream > xStrgStrm = 
getFilter().openInputStream( aFragmentPath );
diff --git a/oox/source/ppt/animvariantcontext.cxx 
b/oox/source/ppt/animvariantcontext.cxx
index 5f2faf799de7..1dc9380177d2 100644
--- a/oox/source/ppt/animvariantcontext.cxx
+++ b/oox/source/ppt/animvariantcontext.cxx
@@ -79,7 +79,7 @@ namespace oox::ppt {
         }
         case PPT_TOKEN( strVal ):
         {
-            OUString val = rAttribs.getString( XML_val, OUString() );
+            OUString val = rAttribs.getStringDefaulted( XML_val);
             maValue <<= val;
             return this;
         }
diff --git a/oox/source/ppt/buildlistcontext.cxx 
b/oox/source/ppt/buildlistcontext.cxx
index 011d303468c3..1432166f07eb 100644
--- a/oox/source/ppt/buildlistcontext.cxx
+++ b/oox/source/ppt/buildlistcontext.cxx
@@ -61,7 +61,7 @@ namespace oox::ppt {
         case PPT_TOKEN( bldGraphic ):
         {
             mbInBldGraphic = true;
-//          OUString sShapeId = rAttribs.getString( XML_spid, OUString() );
+//          OUString sShapeId = rAttribs.getStringDefaulted( XML_spid);
 // TODO
 //      bool uiExpand = rAttribs.getBool( XML_uiExpand, true );
                 /* this is unsigned */
diff --git a/oox/source/ppt/conditioncontext.cxx 
b/oox/source/ppt/conditioncontext.cxx
index 650d7ef9cb1a..39fa33bc6b79 100644
--- a/oox/source/ppt/conditioncontext.cxx
+++ b/oox/source/ppt/conditioncontext.cxx
@@ -134,7 +134,7 @@ namespace oox::ppt {
         {
             maCond.mnType = aElementToken;
             // Convert the node id string to XAnimationNode later
-            maEvent.Source <<= rAttribs.getString(XML_val, OUString());
+            maEvent.Source <<= rAttribs.getStringDefaulted(XML_val);
             return this;
         }
         case PPT_TOKEN( tgtEl ):
diff --git a/oox/source/ppt/customshowlistcontext.cxx 
b/oox/source/ppt/customshowlistcontext.cxx
index 1e6befd639ae..fa76e55f3735 100644
--- a/oox/source/ppt/customshowlistcontext.cxx
+++ b/oox/source/ppt/customshowlistcontext.cxx
@@ -64,7 +64,7 @@ CustomShowContext::CustomShowContext( FragmentHandler2 const 
& rParent,
         case PPT_TOKEN( sld ) :
             mrCustomShowList.back().maSldLst.push_back(
                 getRelations()
-                    .getRelationFromRelId(rAttribs.getString(R_TOKEN(id), 
OUString()))
+                    
.getRelationFromRelId(rAttribs.getStringDefaulted(R_TOKEN(id)))
                     ->maTarget);
             return this;
         default:
diff --git a/oox/source/ppt/presentationfragmenthandler.cxx 
b/oox/source/ppt/presentationfragmenthandler.cxx
index ac1e32e533ec..f2abf183430b 100644
--- a/oox/source/ppt/presentationfragmenthandler.cxx
+++ b/oox/source/ppt/presentationfragmenthandler.cxx
@@ -640,13 +640,13 @@ void PresentationFragmentHandler::finalizeImport()
     case PPT_TOKEN( sldIdLst ):
         return this;
     case PPT_TOKEN( sldMasterId ):
-        maSlideMasterVector.push_back( rAttribs.getString( R_TOKEN( id ), 
OUString() ) );
+        maSlideMasterVector.push_back( rAttribs.getStringDefaulted( R_TOKEN( 
id )) );
         return this;
     case PPT_TOKEN( sldId ):
-        maSlidesVector.push_back( rAttribs.getString( R_TOKEN( id ), 
OUString() ) );
+        maSlidesVector.push_back( rAttribs.getStringDefaulted( R_TOKEN( id )) 
);
         return this;
     case PPT_TOKEN( notesMasterId ):
-        maNotesMasterVector.push_back( rAttribs.getString( R_TOKEN( id ), 
OUString() ) );
+        maNotesMasterVector.push_back( rAttribs.getStringDefaulted( R_TOKEN( 
id )) );
         return this;
     case PPT_TOKEN( sldSz ):
         maSlideSize = GetSize2D( rAttribs.getFastAttributeList() );
@@ -659,12 +659,12 @@ void PresentationFragmentHandler::finalizeImport()
     case PPT_TOKEN( defaultTextStyle ):
         return new TextListStyleContext( *this, *mpTextListStyle );
     case PPT_TOKEN( modifyVerifier ):
-        OUString sAlgorithmClass = rAttribs.getString(XML_cryptAlgorithmClass, 
OUString());
-        OUString sAlgorithmType = rAttribs.getString(XML_cryptAlgorithmType, 
OUString());
+        OUString sAlgorithmClass = 
rAttribs.getStringDefaulted(XML_cryptAlgorithmClass);
+        OUString sAlgorithmType = 
rAttribs.getStringDefaulted(XML_cryptAlgorithmType);
         sal_Int32 nAlgorithmSid = rAttribs.getInteger(XML_cryptAlgorithmSid, 
0);
         sal_Int32 nSpinCount = rAttribs.getInteger(XML_spinCount, 0);
-        OUString sSalt = rAttribs.getString(XML_saltData, OUString());
-        OUString sHash = rAttribs.getString(XML_hashData, OUString());
+        OUString sSalt = rAttribs.getStringDefaulted(XML_saltData);
+        OUString sHash = rAttribs.getStringDefaulted(XML_hashData);
         if (sAlgorithmClass == "hash" && sAlgorithmType == "typeAny" && 
nAlgorithmSid != 0
             && !sSalt.isEmpty() && !sHash.isEmpty())
         {
diff --git a/oox/source/ppt/slidefragmenthandler.cxx 
b/oox/source/ppt/slidefragmenthandler.cxx
index a6b8202a4c61..0c6f183e81e9 100644
--- a/oox/source/ppt/slidefragmenthandler.cxx
+++ b/oox/source/ppt/slidefragmenthandler.cxx
@@ -124,7 +124,7 @@ SlideFragmentHandler::~SlideFragmentHandler()
     case PPT_TOKEN( notesMaster ):      // CT_NotesMaster
         return this;
     case PPT_TOKEN( cSld ):             // CT_CommonSlideData
-        maSlideName = rAttribs.getString(XML_name, OUString());
+        maSlideName = rAttribs.getStringDefaulted(XML_name);
         return this;
 
     case PPT_TOKEN( spTree ):           // CT_GroupShape
@@ -141,7 +141,7 @@ SlideFragmentHandler::~SlideFragmentHandler()
         {
             ::oox::vml::ControlInfo aInfo;
             aInfo.setShapeId( rAttribs.getInteger( XML_spid, 0 ) );
-            aInfo.maFragmentPath = getFragmentPathFromRelId( 
rAttribs.getString( R_TOKEN( id ), OUString() ) );
+            aInfo.maFragmentPath = getFragmentPathFromRelId( 
rAttribs.getStringDefaulted( R_TOKEN( id )) );
             aInfo.maName = rAttribs.getXString( XML_name, OUString() );
             mpSlidePersistPtr->getDrawing()->registerControl( aInfo );
         }
@@ -212,24 +212,24 @@ SlideFragmentHandler::~SlideFragmentHandler()
         }
         // insert a new comment in vector commentsList
         mpSlidePersistPtr->getCommentsList().cmLst.emplace_back();
-        
mpSlidePersistPtr->getCommentsList().cmLst.back().setAuthorId(rAttribs.getString(XML_authorId,
 OUString()));
-        
mpSlidePersistPtr->getCommentsList().cmLst.back().setdt(rAttribs.getString(XML_dt,
 OUString()));
-        
mpSlidePersistPtr->getCommentsList().cmLst.back().setidx(rAttribs.getString(XML_idx,
 OUString()));
+        
mpSlidePersistPtr->getCommentsList().cmLst.back().setAuthorId(rAttribs.getStringDefaulted(XML_authorId));
+        
mpSlidePersistPtr->getCommentsList().cmLst.back().setdt(rAttribs.getStringDefaulted(XML_dt));
+        
mpSlidePersistPtr->getCommentsList().cmLst.back().setidx(rAttribs.getStringDefaulted(XML_idx));
         break;
 
     case PPT_TOKEN( pos ):
         mpSlidePersistPtr->getCommentsList().cmLst.back().setPoint(
-            rAttribs.getString(XML_x, OUString()),
-            rAttribs.getString(XML_y, OUString()));
+            rAttribs.getStringDefaulted(XML_x),
+            rAttribs.getStringDefaulted(XML_y));
         break;
 
     case PPT_TOKEN( cmAuthor ):
         CommentAuthor _author;
-        _author.clrIdx = rAttribs.getString(XML_clrIdx, OUString());
-        _author.id = rAttribs.getString(XML_id, OUString());
-        _author.initials = rAttribs.getString(XML_initials, OUString());
-        _author.lastIdx = rAttribs.getString(XML_lastIdx, OUString());
-        _author.name = rAttribs.getString(XML_name, OUString());
+        _author.clrIdx = rAttribs.getStringDefaulted(XML_clrIdx);
+        _author.id = rAttribs.getStringDefaulted(XML_id);
+        _author.initials = rAttribs.getStringDefaulted(XML_initials);
+        _author.lastIdx = rAttribs.getStringDefaulted(XML_lastIdx);
+        _author.name = rAttribs.getStringDefaulted(XML_name);
         mpSlidePersistPtr->getCommentAuthors().addAuthor(_author);
         break;
     }
diff --git a/oox/source/ppt/slidetransitioncontext.cxx 
b/oox/source/ppt/slidetransitioncontext.cxx
index 77349793260c..b7a5d9c19f70 100644
--- a/oox/source/ppt/slidetransitioncontext.cxx
+++ b/oox/source/ppt/slidetransitioncontext.cxx
@@ -164,7 +164,7 @@ SlideTransitionContext::~SlideTransitionContext() noexcept
         if (!mbHasTransition)
         {
             mbHasTransition = true;
-            maTransition.setPresetTransition(rAttribs.getString(XML_prst, ""));
+            
maTransition.setPresetTransition(rAttribs.getStringDefaulted(XML_prst));
         }
         return this;
     case PPT_TOKEN( strips ):
diff --git a/oox/source/ppt/timeanimvaluecontext.cxx 
b/oox/source/ppt/timeanimvaluecontext.cxx
index e81f4967af72..443b0b039303 100644
--- a/oox/source/ppt/timeanimvaluecontext.cxx
+++ b/oox/source/ppt/timeanimvaluecontext.cxx
@@ -60,8 +60,8 @@ namespace oox::ppt {
         {
             mbInValue = true;
             TimeAnimationValue val;
-            val.msFormula = rAttribs.getString( XML_fmla, OUString() );
-            val.msTime =  rAttribs.getString( XML_tm, OUString() );
+            val.msFormula = rAttribs.getStringDefaulted( XML_fmla);
+            val.msTime =  rAttribs.getStringDefaulted( XML_tm);
             maTavList.push_back( val );
             return this;
         }
diff --git a/oox/source/ppt/timetargetelementcontext.cxx 
b/oox/source/ppt/timetargetelementcontext.cxx
index bf74b3353cfa..a6ced3ea90b4 100644
--- a/oox/source/ppt/timetargetelementcontext.cxx
+++ b/oox/source/ppt/timetargetelementcontext.cxx
@@ -66,14 +66,14 @@ namespace oox::ppt {
                 case PPT_TOKEN( subSp ):
                     bTargetSet = true;
                     maShapeTarget.mnType = XML_subSp;
-                    maShapeTarget.msSubShapeId = rAttribs.getString( XML_spid, 
OUString() );
+                    maShapeTarget.msSubShapeId = rAttribs.getStringDefaulted( 
XML_spid);
                     return this;
                 case PPT_TOKEN( graphicEl ):
                     return this; // needs a:dgm for the target
                 case A_TOKEN( dgm ):
                     bTargetSet = true;
                     maShapeTarget.mnType = XML_dgm;
-                    maShapeTarget.msSubShapeId = rAttribs.getString( XML_id, 
OUString() );
+                    maShapeTarget.msSubShapeId = rAttribs.getStringDefaulted( 
XML_id);
                     return this;
                 case PPT_TOKEN( oleChartEl ):
                     bTargetSet = true;
@@ -118,7 +118,7 @@ namespace oox::ppt {
         case PPT_TOKEN( inkTgt ):
         {
             mpTarget->mnType = XML_inkTgt;
-            OUString aId = rAttribs.getString( XML_spid, OUString() );
+            OUString aId = rAttribs.getStringDefaulted( XML_spid);
             if( !aId.isEmpty() )
             {
                 mpTarget->msValue = aId;
@@ -148,7 +148,7 @@ namespace oox::ppt {
         case PPT_TOKEN( spTgt ):
         {
             mpTarget->mnType = XML_spTgt;
-            OUString aId = rAttribs.getString( XML_spid, OUString() );
+            OUString aId = rAttribs.getStringDefaulted( XML_spid);
             mpTarget->msValue = aId;
             return new ShapeTargetElementContext( *this, 
mpTarget->maShapeTarget );
         }
diff --git a/oox/source/vml/vmlshapecontext.cxx 
b/oox/source/vml/vmlshapecontext.cxx
index bf62b725ff23..2e3b1ef9fd72 100644
--- a/oox/source/vml/vmlshapecontext.cxx
+++ b/oox/source/vml/vmlshapecontext.cxx
@@ -153,7 +153,7 @@ ContextHandlerRef ShapeLayoutContext::onCreateContext( 
sal_Int32 nElement, const
     {
         case O_TOKEN( idmap ):
         {
-            OUString aBlockIds = rAttribs.getString( XML_data, OUString() );
+            OUString aBlockIds = rAttribs.getStringDefaulted( XML_data);
             sal_Int32 nIndex = 0;
             while( nIndex >= 0 )
             {
@@ -247,7 +247,7 @@ ContextHandlerRef ShapeContextBase::createShapeContext( 
ContextHandler2Helper co
         case VML_TOKEN( shape ):
             if (rAttribs.hasAttribute(XML_path) &&
                     // tdf#122563 skip in the case of empty path
-                    !rAttribs.getString(XML_path, "").isEmpty())
+                    !rAttribs.getStringDefaulted(XML_path).isEmpty())
                 return new ShapeContext( rParent, rShapes.createShape< 
BezierShape >(), rAttribs );
             else
                 return new ShapeContext( rParent, rShapes.createShape< 
ComplexShape >(), rAttribs );
@@ -286,7 +286,7 @@ ShapeTypeContext::ShapeTypeContext(ContextHandler2Helper 
const & rParent,
     // shape identifier and shape name
     bool bHasOspid = rAttribs.hasAttribute( O_TOKEN( spid ) );
     mrTypeModel.maShapeId = rAttribs.getXString( bHasOspid ? O_TOKEN( spid ) : 
XML_id, OUString() );
-    mrTypeModel.maLegacyId = rAttribs.getString( XML_id, OUString() );
+    mrTypeModel.maLegacyId = rAttribs.getStringDefaulted( XML_id);
     OSL_ENSURE( !mrTypeModel.maShapeId.isEmpty(), 
"ShapeTypeContext::ShapeTypeContext - missing shape identifier" );
     // builtin shape type identifier
     mrTypeModel.moShapeType = rAttribs.getInteger( O_TOKEN( spt ) );
@@ -312,7 +312,7 @@ ShapeTypeContext::ShapeTypeContext(ContextHandler2Helper 
const & rParent,
     // coordinate system position/size, CSS style
     mrTypeModel.moCoordPos = lclDecodeInt32Pair( rAttribs, XML_coordorigin );
     mrTypeModel.moCoordSize = lclDecodeInt32Pair( rAttribs, XML_coordsize );
-    setStyle( rAttribs.getString( XML_style, OUString() ) );
+    setStyle( rAttribs.getStringDefaulted( XML_style) );
     if( lclDecodeBool( rAttribs, O_TOKEN( hr )).value_or( false ))
     {   // MSO's handling of o:hr width is nowhere near what the spec says:
         // - o:hrpct is not in % but in 0.1%
@@ -337,11 +337,11 @@ ShapeTypeContext::ShapeTypeContext(ContextHandler2Helper 
const & rParent,
     mrTypeModel.maFillModel.moColor = rAttribs.getString( XML_fillcolor );
 
     // For roundrect we may have an arcsize attribute to read
-    mrTypeModel.maArcsize = rAttribs.getString(XML_arcsize, OUString());
+    mrTypeModel.maArcsize = rAttribs.getStringDefaulted(XML_arcsize);
     // editas
-    mrTypeModel.maEditAs = rAttribs.getString(XML_editas, OUString());
+    mrTypeModel.maEditAs = rAttribs.getStringDefaulted(XML_editas);
 
-    mrTypeModel.maAdjustments = rAttribs.getString(XML_adj, OUString());
+    mrTypeModel.maAdjustments = rAttribs.getStringDefaulted(XML_adj);
 }
 
 ContextHandlerRef ShapeTypeContext::onCreateContext( sal_Int32 nElement, const 
AttributeList& rAttribs )
@@ -507,14 +507,14 @@ ShapeContext::ShapeContext(ContextHandler2Helper const& 
rParent,
     // collect shape specific attributes
     mrShapeModel.maType = rAttribs.getXString( XML_type, OUString() );
     // polyline path
-    setPoints( rAttribs.getString( XML_points, OUString() ) );
+    setPoints( rAttribs.getStringDefaulted( XML_points) );
     // line start and end positions
-    setFrom(rAttribs.getString(XML_from, OUString()));
-    setTo(rAttribs.getString(XML_to, OUString()));
-    setControl1(rAttribs.getString(XML_control1, OUString()));
-    setControl2(rAttribs.getString(XML_control2, OUString()));
-    setVmlPath(rAttribs.getString(XML_path, OUString()));
-    setHyperlink(rAttribs.getString(XML_href, OUString()));
+    setFrom(rAttribs.getStringDefaulted(XML_from));
+    setTo(rAttribs.getStringDefaulted(XML_to));
+    setControl1(rAttribs.getStringDefaulted(XML_control1));
+    setControl2(rAttribs.getStringDefaulted(XML_control2));
+    setVmlPath(rAttribs.getStringDefaulted(XML_path));
+    setHyperlink(rAttribs.getStringDefaulted(XML_href));
 }
 
 ContextHandlerRef ShapeContext::onCreateContext( sal_Int32 nElement, const 
AttributeList& rAttribs )
@@ -565,19 +565,19 @@ ContextHandlerRef ShapeContext::onCreateContext( 
sal_Int32 nElement, const Attri
             // and is there because of the lines above which change it to 
TextFrame
             dynamic_cast< SimpleShape& >( mrShape ).setService(
                     "com.sun.star.drawing.RectangleShape");
-            mrShapeModel.maLegacyDiagramPath = 
getFragmentPathFromRelId(rAttribs.getString(XML_id, OUString()));
+            mrShapeModel.maLegacyDiagramPath = 
getFragmentPathFromRelId(rAttribs.getStringDefaulted(XML_id));
             break;
         case O_TOKEN( signatureline ):
             mrShapeModel.mbIsSignatureLine = true;
-            mrShapeModel.maSignatureId = rAttribs.getString(XML_id, 
OUString());
+            mrShapeModel.maSignatureId = rAttribs.getStringDefaulted(XML_id);
             mrShapeModel.maSignatureLineSuggestedSignerName
-                = rAttribs.getString(O_TOKEN(suggestedsigner), OUString());
+                = rAttribs.getStringDefaulted(O_TOKEN(suggestedsigner));
             mrShapeModel.maSignatureLineSuggestedSignerTitle
-                = rAttribs.getString(O_TOKEN(suggestedsigner2), OUString());
+                = rAttribs.getStringDefaulted(O_TOKEN(suggestedsigner2));
             mrShapeModel.maSignatureLineSuggestedSignerEmail
-                = rAttribs.getString(O_TOKEN(suggestedsigneremail), 
OUString());
+                = rAttribs.getStringDefaulted(O_TOKEN(suggestedsigneremail));
             mrShapeModel.maSignatureLineSigningInstructions
-                = rAttribs.getString(O_TOKEN(signinginstructions), OUString());
+                = rAttribs.getStringDefaulted(O_TOKEN(signinginstructions));
             mrShapeModel.mbSignatureLineShowSignDate = 
ConversionHelper::decodeBool(
                 rAttribs.getString(XML_showsigndate, "t")); // default is true
             mrShapeModel.mbSignatureLineCanAddComment = 
ConversionHelper::decodeBool(
@@ -720,8 +720,8 @@ ControlShapeContext::ControlShapeContext( 
::oox::core::ContextHandler2Helper con
 {
     ::oox::vml::ControlInfo aInfo;
     aInfo.maShapeId = rAttribs.getXString( W_TOKEN( shapeid ), OUString() );
-    aInfo.maFragmentPath = getFragmentPathFromRelId(rAttribs.getString( 
R_TOKEN(id), OUString() ));
-    aInfo.maName = rAttribs.getString( W_TOKEN( name ), OUString() );
+    aInfo.maFragmentPath = 
getFragmentPathFromRelId(rAttribs.getStringDefaulted( R_TOKEN(id)));
+    aInfo.maName = rAttribs.getStringDefaulted( W_TOKEN( name ));
     aInfo.mbTextContentShape = true;
     rShapes.getDrawing().registerControl(aInfo);
 }
diff --git a/oox/source/vml/vmltextboxcontext.cxx 
b/oox/source/vml/vmltextboxcontext.cxx
index 768919c12a85..c6b3414be890 100644
--- a/oox/source/vml/vmltextboxcontext.cxx
+++ b/oox/source/vml/vmltextboxcontext.cxx
@@ -209,7 +209,7 @@ TextBoxContext::TextBoxContext( ContextHandler2Helper const 
& rParent, TextBox&
         rTextBox.borderDistanceSet = true;
     }
 
-    OUString sStyle = rAttribs.getString( XML_style, OUString() );
+    OUString sStyle = rAttribs.getStringDefaulted( XML_style);
     sal_Int32 nIndex = 0;
     while( nIndex >= 0 )
     {

Reply via email to