summaryrefslogtreecommitdiff
path: root/sc/source/filter/excel/xepage.cxx
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-06-05 16:44:26 +0200
committerMichael Stahl <mstahl@redhat.com>2013-06-05 16:55:51 +0200
commit350534aba8f82d57782ec22fa4f6b776509beb2d (patch)
treed53ea31cad6d773d249b479275bcef10d5ba87b2 /sc/source/filter/excel/xepage.cxx
parentbe8855ebe4e5b978971d77df3d40e051d09597a7 (diff)
sc: XLSX export: remove mpAttributes crack:
When there are attributes, XclExpXmlStartElementRecord::SaveXml() would not call startElement() but instead write the XML element all by itself, which means there will be an endElement() for which no previous startElement() was called, which makes checking that these match hard. Since this silly mpAttributes over-engineering is only used in one place anyway, give that a separate subclass and use startElement(). There is still an issue with various WriteAttribute methods; if those are used it's probably not possible to check that for well-formedness. Change-Id: Id842f000a6fecd77211836705545d58031ebd0f8
Diffstat (limited to 'sc/source/filter/excel/xepage.cxx')
-rw-r--r--sc/source/filter/excel/xepage.cxx17
1 files changed, 13 insertions, 4 deletions
diff --git a/sc/source/filter/excel/xepage.cxx b/sc/source/filter/excel/xepage.cxx
index 8e1ffb114352..370188788a34 100644
--- a/sc/source/filter/excel/xepage.cxx
+++ b/sc/source/filter/excel/xepage.cxx
@@ -332,17 +332,26 @@ XclExpPageSettings::XclExpPageSettings( const XclExpRoot& rRoot ) :
maData.maVerPageBreaks.push_back(*itr);
}
-static void lcl_WriteHeaderFooter( XclExpXmlStream& rStrm )
+class XclExpXmlStartHeaderFooterElementRecord : public XclExpXmlElementRecord
+{
+public:
+ explicit XclExpXmlStartHeaderFooterElementRecord(sal_Int32 const nElement)
+ : XclExpXmlElementRecord(nElement) {}
+
+ virtual void SaveXml( XclExpXmlStream& rStrm ) SAL_OVERRIDE;
+};
+
+void XclExpXmlStartHeaderFooterElementRecord::SaveXml(XclExpXmlStream& rStrm)
{
// OOXTODO: we currently only emit oddHeader/oddFooter elements, and
// do not support the first/even/odd page distinction.
- rStrm.WriteAttributes(
+ sax_fastparser::FSHelperPtr& rStream = rStrm.GetCurrentStream();
+ rStream->startElement( mnElement,
// OOXTODO: XML_alignWithMargins,
XML_differentFirst, "false", // OOXTODO
XML_differentOddEven, "false", // OOXTODO
// OOXTODO: XML_scaleWithDoc
FSEND );
- rStrm.GetCurrentStream()->write( ">" );
}
void XclExpPageSettings::Save( XclExpStream& rStrm )
@@ -388,7 +397,7 @@ void XclExpPageSettings::SaveXml( XclExpXmlStream& rStrm )
XclExpSetup( maData ).SaveXml( rStrm );
- XclExpXmlStartElementRecord( XML_headerFooter, lcl_WriteHeaderFooter ).SaveXml( rStrm );
+ XclExpXmlStartHeaderFooterElementRecord(XML_headerFooter).SaveXml(rStrm);
XclExpHeaderFooter( EXC_ID_HEADER, maData.maHeader ).SaveXml( rStrm );
XclExpHeaderFooter( EXC_ID_FOOTER, maData.maFooter ).SaveXml( rStrm );
XclExpXmlEndElementRecord( XML_headerFooter ).SaveXml( rStrm );