Kaydet (Commit) ede82878 authored tarafından Zolnai Tamás's avatar Zolnai Tamás

Use OString in xmlparse.cxx to avoid numerous srting conversion

Plus:
- Use macros instead of members.
- Use const where it is usefull.

Change-Id: I960f5dec29b5c17655055e1884bc4e7983359318
üst db45382b
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
#include <libxml/xmlexports.h> // define XMLCALL so expat.h does not redefine it #include <libxml/xmlexports.h> // define XMLCALL so expat.h does not redefine it
#include <expat.h> #include <expat.h>
#include <rtl/ustring.hxx> #include <rtl/string.hxx>
#include <rtl/ustrbuf.hxx> #include <rtl/strbuf.hxx>
#include "boost/unordered_map.hpp" #include "boost/unordered_map.hpp"
#include "export.hxx" #include "export.hxx"
...@@ -56,21 +56,21 @@ using namespace std; ...@@ -56,21 +56,21 @@ using namespace std;
class XMLAttribute class XMLAttribute
{ {
private: private:
OUString sName; OString sName;
OUString sValue; OString sValue;
public: public:
/// creates an attribute /// creates an attribute
XMLAttribute( XMLAttribute(
const OUString &rName, // attributes name const OString &rName, // attributes name
const OUString &rValue // attributes data const OString &rValue // attributes data
) )
: sName( rName ), sValue( rValue ) {} : sName( rName ), sValue( rValue ) {}
OUString GetName() const { return sName; } OString GetName() const { return sName; }
OUString GetValue() const { return sValue; } OString GetValue() const { return sValue; }
void setValue(const OUString &rValue){sValue=rValue;} void setValue(const OString &rValue){sValue=rValue;}
/// returns true if two attributes are equal and have the same value /// returns true if two attributes are equal and have the same value
sal_Bool IsEqual( sal_Bool IsEqual(
...@@ -183,7 +183,7 @@ class XMLFile : public XMLParentNode ...@@ -183,7 +183,7 @@ class XMLFile : public XMLParentNode
{ {
public: public:
XMLFile( XMLFile(
const OUString &rFileName // the file name, empty if created from memory stream const OString &rFileName // the file name, empty if created from memory stream
); );
XMLFile( const XMLFile& obj ) ; XMLFile( const XMLFile& obj ) ;
~XMLFile(); ~XMLFile();
...@@ -203,20 +203,16 @@ public: ...@@ -203,20 +203,16 @@ public:
virtual sal_uInt16 GetNodeType(); virtual sal_uInt16 GetNodeType();
/// returns file name /// returns file name
OUString GetName() { return sFileName; } OString GetName() const { return sFileName; }
void SetName( const OUString &rFilename ) { sFileName = rFilename; } void SetName( const OString &rFilename ) { sFileName = rFilename; }
const std::vector<OString> getOrder(){ return order; } const std::vector<OString>& getOrder() const { return order; }
protected: protected:
/// writes a string as UTF8 with dos line ends to a given stream
void WriteString( ofstream &rStream, const OUString &sString );
void InsertL10NElement( XMLElement* pElement); void InsertL10NElement( XMLElement* pElement);
// DATA // DATA
OUString sFileName; OString sFileName;
const OString ID, OLDREF, XML_LANG;
TagMap nodes_localize; TagMap nodes_localize;
XMLHashMap* XMLStrings; XMLHashMap* XMLStrings;
...@@ -229,10 +225,7 @@ class XMLUtil{ ...@@ -229,10 +225,7 @@ class XMLUtil{
public: public:
/// Quot the XML characters /// Quot the XML characters
static OUString QuotHTML( const OUString& rString ); static OString QuotHTML( const OString& rString );
/// UnQuot the XML characters
static OUString UnQuotHTML( const OUString &rString );
}; };
...@@ -243,7 +236,7 @@ public: ...@@ -243,7 +236,7 @@ public:
class XMLElement : public XMLParentNode class XMLElement : public XMLParentNode
{ {
private: private:
OUString sElementName; OString sElementName;
XMLAttributeList *pAttributes; XMLAttributeList *pAttributes;
OString project, OString project,
filename, filename,
...@@ -254,12 +247,12 @@ private: ...@@ -254,12 +247,12 @@ private:
int nPos; int nPos;
protected: protected:
void Print(XMLNode *pCur, OUStringBuffer& buffer , bool rootelement); void Print(XMLNode *pCur, OStringBuffer& buffer , bool rootelement);
public: public:
/// create an element node /// create an element node
XMLElement(){} XMLElement(){}
XMLElement( XMLElement(
const OUString &rName, // the element name const OString &rName, // the element name
XMLParentNode *Parent // parent node of this element XMLParentNode *Parent // parent node of this element
): XMLParentNode( Parent ), ): XMLParentNode( Parent ),
sElementName( rName ), sElementName( rName ),
...@@ -281,18 +274,18 @@ public: ...@@ -281,18 +274,18 @@ public:
virtual sal_uInt16 GetNodeType(); virtual sal_uInt16 GetNodeType();
/// returns element name /// returns element name
OUString GetName() { return sElementName; } OString GetName() const { return sElementName; }
/// returns list of attributes of this element /// returns list of attributes of this element
XMLAttributeList *GetAttributeList() { return pAttributes; } XMLAttributeList *GetAttributeList() { return pAttributes; }
/// adds a new attribute to this element, typically used by parser /// adds a new attribute to this element, typically used by parser
void AddAttribute( const OUString &rAttribute, const OUString &rValue ); void AddAttribute( const OString &rAttribute, const OString &rValue );
void ChangeLanguageTag( const OUString &rValue ); void ChangeLanguageTag( const OString &rValue );
/// Return a Unicode String representation of this object /// Return a Unicode String representation of this object
OUString ToOUString(); OString ToOString();
void SetProject ( OString const & prj ){ project = prj; } void SetProject ( OString const & prj ){ project = prj; }
void SetFileName ( OString const & fn ){ filename = fn; } void SetFileName ( OString const & fn ){ filename = fn; }
...@@ -302,13 +295,13 @@ public: ...@@ -302,13 +295,13 @@ public:
void SetPos ( int nPos_in ){ nPos = nPos_in; } void SetPos ( int nPos_in ){ nPos = nPos_in; }
void SetOldRef ( OString const & sOldRef_in ){ sOldRef = sOldRef_in; } void SetOldRef ( OString const & sOldRef_in ){ sOldRef = sOldRef_in; }
virtual int GetPos() { return nPos; } virtual int GetPos() { return nPos; }
OString GetProject() { return project; } OString GetProject() const { return project; }
OString GetFileName() { return filename; } OString GetFileName() const { return filename; }
OString GetId() { return id; } OString GetId() const { return id; }
OString GetOldref() { return sOldRef; } OString GetOldref() const { return sOldRef; }
OString GetResourceType(){ return resourceType; } OString GetResourceType() const { return resourceType; }
OString GetLanguageId() { return languageId; } OString GetLanguageId() const { return languageId; }
}; };
...@@ -320,18 +313,18 @@ public: ...@@ -320,18 +313,18 @@ public:
class XMLData : public XMLChildNode class XMLData : public XMLChildNode
{ {
private: private:
OUString sData; OString sData;
bool isNewCreated; bool isNewCreated;
public: public:
/// create a data node /// create a data node
XMLData( XMLData(
const OUString &rData, // the initial data const OString &rData, // the initial data
XMLParentNode *Parent // the parent node of this data, typically a element node XMLParentNode *Parent // the parent node of this data, typically a element node
) )
: XMLChildNode( Parent ), sData( rData ) , isNewCreated ( false ){} : XMLChildNode( Parent ), sData( rData ) , isNewCreated ( false ){}
XMLData( XMLData(
const OUString &rData, // the initial data const OString &rData, // the initial data
XMLParentNode *Parent, // the parent node of this data, typically a element node XMLParentNode *Parent, // the parent node of this data, typically a element node
bool newCreated bool newCreated
) )
...@@ -343,12 +336,12 @@ public: ...@@ -343,12 +336,12 @@ public:
virtual sal_uInt16 GetNodeType(); virtual sal_uInt16 GetNodeType();
/// returns the data /// returns the data
OUString GetData() { return sData; } OString GetData() const { return sData; }
bool isNew() { return isNewCreated; } bool isNew() { return isNewCreated; }
/// adds new character data to the existing one /// adds new character data to the existing one
void AddData( void AddData(
const OUString &rData // the new data const OString &rData // the new data
); );
...@@ -362,12 +355,12 @@ public: ...@@ -362,12 +355,12 @@ public:
class XMLComment : public XMLChildNode class XMLComment : public XMLChildNode
{ {
private: private:
OUString sComment; OString sComment;
public: public:
/// create a comment node /// create a comment node
XMLComment( XMLComment(
const OUString &rComment, // the comment const OString &rComment, // the comment
XMLParentNode *Parent // the parent node of this comemnt, typically a element node XMLParentNode *Parent // the parent node of this comemnt, typically a element node
) )
: XMLChildNode( Parent ), sComment( rComment ) {} : XMLChildNode( Parent ), sComment( rComment ) {}
...@@ -379,7 +372,7 @@ public: ...@@ -379,7 +372,7 @@ public:
XMLComment& operator=(const XMLComment& obj); XMLComment& operator=(const XMLComment& obj);
/// returns the comment /// returns the comment
OUString GetComment() { return sComment; } OString GetComment() const { return sComment; }
}; };
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
...@@ -389,12 +382,12 @@ public: ...@@ -389,12 +382,12 @@ public:
class XMLDefault : public XMLChildNode class XMLDefault : public XMLChildNode
{ {
private: private:
OUString sDefault; OString sDefault;
public: public:
/// create a comment node /// create a comment node
XMLDefault( XMLDefault(
const OUString &rDefault, // the comment const OString &rDefault, // the comment
XMLParentNode *Parent // the parent node of this comemnt, typically a element node XMLParentNode *Parent // the parent node of this comemnt, typically a element node
) )
: XMLChildNode( Parent ), sDefault( rDefault ) {} : XMLChildNode( Parent ), sDefault( rDefault ) {}
...@@ -407,7 +400,7 @@ public: ...@@ -407,7 +400,7 @@ public:
virtual sal_uInt16 GetNodeType(); virtual sal_uInt16 GetNodeType();
/// returns the comment /// returns the comment
OUString GetDefault() { return sDefault; } OString GetDefault() const { return sDefault; }
}; };
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
...@@ -418,7 +411,7 @@ struct XMLError { ...@@ -418,7 +411,7 @@ struct XMLError {
XML_Error eCode; ///< the error code XML_Error eCode; ///< the error code
std::size_t nLine; ///< error line number std::size_t nLine; ///< error line number
std::size_t nColumn; ///< error column number std::size_t nColumn; ///< error column number
OUString sMessage; ///< readable error message OString sMessage; ///< readable error message
}; };
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
...@@ -457,7 +450,7 @@ public: ...@@ -457,7 +450,7 @@ public:
/// parse a file, returns NULL on criticall errors /// parse a file, returns NULL on criticall errors
XMLFile *Execute( XMLFile *Execute(
const OUString &rFileName, // the file name const OString &rFileName, // the file name
XMLFile *pXMLFileIn // the XMLFile XMLFile *pXMLFileIn // the XMLFile
); );
......
...@@ -124,7 +124,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) { ...@@ -124,7 +124,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) {
hasNoError = hasNoError =
aParser.CreatePO( aParser.CreatePO(
aArgs.m_sOutputFile, aArgs.m_sInputFile, aArgs.m_sOutputFile, aArgs.m_sInputFile,
new XMLFile( OUString('0') ), "help" ); new XMLFile( OString('0') ), "help" );
} }
if( hasNoError ) if( hasNoError )
......
...@@ -79,20 +79,16 @@ bool HelpParser::CreatePO( ...@@ -79,20 +79,16 @@ bool HelpParser::CreatePO(
const OString &rPOFile_in, const OString &sHelpFile, const OString &rPOFile_in, const OString &sHelpFile,
XMLFile *pXmlFile, const OString &rGsi1){ XMLFile *pXmlFile, const OString &rGsi1){
SimpleXMLParser aParser; SimpleXMLParser aParser;
OUString sXmlFile(
OStringToOUString(sHelpFile, RTL_TEXTENCODING_ASCII_US));
//TODO: explicit BOM handling? //TODO: explicit BOM handling?
std::auto_ptr <XMLFile> file ( aParser.Execute( sXmlFile, pXmlFile ) ); std::auto_ptr <XMLFile> file ( aParser.Execute( sHelpFile, pXmlFile ) );
if(file.get() == NULL) if(file.get() == NULL)
{ {
printf( printf(
"%s: %s\n", "%s: %s\n",
sHelpFile.getStr(), sHelpFile.getStr(),
(OUStringToOString( aParser.GetError().sMessage.getStr());
aParser.GetError().sMessage, RTL_TEXTENCODING_ASCII_US).
getStr()));
exit(-1); exit(-1);
} }
file->Extract(); file->Extract();
...@@ -125,7 +121,7 @@ bool HelpParser::CreatePO( ...@@ -125,7 +121,7 @@ bool HelpParser::CreatePO(
if( pXMLElement != NULL ) if( pXMLElement != NULL )
{ {
OString data( OString data(
OUStringToOString( pXMLElement->ToOUString(), RTL_TEXTENCODING_UTF8 ). pXMLElement->ToOString().
replaceAll("\n",OString()). replaceAll("\n",OString()).
replaceAll("\t",OString()).trim()); replaceAll("\t",OString()).trim());
...@@ -153,11 +149,9 @@ bool HelpParser::Merge( const OString &rPOFile, const OString &rDestinationFile, ...@@ -153,11 +149,9 @@ bool HelpParser::Merge( const OString &rPOFile, const OString &rDestinationFile,
SimpleXMLParser aParser; SimpleXMLParser aParser;
OUString sXmlFile(
OStringToOUString(sHelpFile, RTL_TEXTENCODING_ASCII_US));
//TODO: explicit BOM handling? //TODO: explicit BOM handling?
XMLFile* xmlfile = ( aParser.Execute( sXmlFile, new XMLFile( OUString('0') ) ) ); XMLFile* xmlfile = ( aParser.Execute( sHelpFile, new XMLFile( OString('0') ) ) );
bool hasNoError = MergeSingleFile( xmlfile , pMergeDataFile , rLanguage , rDestinationFile ); bool hasNoError = MergeSingleFile( xmlfile , pMergeDataFile , rLanguage , rDestinationFile );
delete xmlfile; delete xmlfile;
return hasNoError; return hasNoError;
...@@ -207,7 +201,7 @@ void HelpParser::ProcessHelp( LangHashMap* aLangHM , const OString& sCur , ResDa ...@@ -207,7 +201,7 @@ void HelpParser::ProcessHelp( LangHashMap* aLangHM , const OString& sCur , ResDa
pEntrys = NULL; pEntrys = NULL;
if( !sCur.equalsIgnoreAsciiCaseL(RTL_CONSTASCII_STRINGPARAM("en-US")) ){ if( !sCur.equalsIgnoreAsciiCase("en-US") ){
pXMLElement = (*aLangHM)[ "en-US" ]; pXMLElement = (*aLangHM)[ "en-US" ];
if( pXMLElement == NULL ) if( pXMLElement == NULL )
{ {
...@@ -219,15 +213,15 @@ void HelpParser::ProcessHelp( LangHashMap* aLangHM , const OString& sCur , ResDa ...@@ -219,15 +213,15 @@ void HelpParser::ProcessHelp( LangHashMap* aLangHM , const OString& sCur , ResDa
pResData->sId = sLId; pResData->sId = sLId;
OString sNewText; OString sNewText;
OUString sNewdata; OString sNewdata;
OUString sSourceText( OString sSourceText(
pXMLElement->ToOUString(). pXMLElement->ToOString().
replaceAll( replaceAll(
OUString("\n"), OString("\n"),
OUString()). OString()).
replaceAll( replaceAll(
OUString("\t"), OString("\t"),
OUString())); OString()));
// re-add spaces to the beginning of translated string, // re-add spaces to the beginning of translated string,
// important for indentation of Basic code examples // important for indentation of Basic code examples
sal_Int32 nPreSpaces = 0; sal_Int32 nPreSpaces = 0;
...@@ -236,20 +230,18 @@ void HelpParser::ProcessHelp( LangHashMap* aLangHM , const OString& sCur , ResDa ...@@ -236,20 +230,18 @@ void HelpParser::ProcessHelp( LangHashMap* aLangHM , const OString& sCur , ResDa
nPreSpaces++; nPreSpaces++;
if( sCur == "qtz" ) if( sCur == "qtz" )
{ {
const OString sOriginText = OUStringToOString(sSourceText, RTL_TEXTENCODING_UTF8); sNewText = MergeEntrys::GetQTZText(*pResData, sSourceText);
sNewText = MergeEntrys::GetQTZText(*pResData, sOriginText); sNewdata = sNewText;
sNewdata = OStringToOUString(sNewText, RTL_TEXTENCODING_UTF8);
} }
else if( pMergeDataFile ) else if( pMergeDataFile )
{ {
pEntrys = pMergeDataFile->GetMergeEntrys( pResData ); pEntrys = pMergeDataFile->GetMergeEntrys( pResData );
if( pEntrys != NULL) if( pEntrys != NULL)
{ {
pEntrys->GetText( sNewText, STRING_TYP_TEXT, sCur , true ); pEntrys->GetText( sNewText, STRING_TYP_TEXT, sCur, true );
OUString sTemp = OStringToOUString(sNewText, RTL_TEXTENCODING_UTF8); if (helper::isWellFormedXML(XMLUtil::QuotHTML(sNewText)))
if (helper::isWellFormedXML(OUStringToOString(XMLUtil::QuotHTML(sTemp),RTL_TEXTENCODING_UTF8)))
{ {
sNewdata = sSourceText.copy(0,nPreSpaces) + sTemp; sNewdata = sSourceText.copy(0,nPreSpaces) + sNewText;
} }
} }
} }
...@@ -270,8 +262,7 @@ void HelpParser::ProcessHelp( LangHashMap* aLangHM , const OString& sCur , ResDa ...@@ -270,8 +262,7 @@ void HelpParser::ProcessHelp( LangHashMap* aLangHM , const OString& sCur , ResDa
"Can't find GID=" << pResData->sGId.getStr() << " LID=" "Can't find GID=" << pResData->sGId.getStr() << " LID="
<< pResData->sId.getStr() << " TYP=" << pResData->sResTyp.getStr() << "\n"); << pResData->sId.getStr() << " TYP=" << pResData->sResTyp.getStr() << "\n");
} }
pXMLElement->ChangeLanguageTag( pXMLElement->ChangeLanguageTag(sCur);
OStringToOUString(sCur, RTL_TEXTENCODING_ASCII_US));
} }
} }
......
...@@ -39,6 +39,10 @@ using namespace U_ICU_NAMESPACE; ...@@ -39,6 +39,10 @@ using namespace U_ICU_NAMESPACE;
using namespace std; using namespace std;
using namespace osl; using namespace osl;
#define XML_LANG "xml-lang"
#define ID "id"
#define OLDREF "oldref"
// //
// class XMLChildNode // class XMLChildNode
// //
...@@ -172,12 +176,6 @@ void XMLFile::Write( OString const &aFilename ) ...@@ -172,12 +176,6 @@ void XMLFile::Write( OString const &aFilename )
s.close(); s.close();
} }
void XMLFile::WriteString( ofstream &rStream, const OUString &sString )
{
OString sText(OUStringToOString(sString, RTL_TEXTENCODING_UTF8));
rStream << sText.getStr();
}
sal_Bool XMLFile::Write( ofstream &rStream , XMLNode *pCur ) sal_Bool XMLFile::Write( ofstream &rStream , XMLNode *pCur )
{ {
if ( !pCur ) if ( !pCur )
...@@ -193,15 +191,15 @@ sal_Bool XMLFile::Write( ofstream &rStream , XMLNode *pCur ) ...@@ -193,15 +191,15 @@ sal_Bool XMLFile::Write( ofstream &rStream , XMLNode *pCur )
case XML_NODE_TYPE_ELEMENT: { case XML_NODE_TYPE_ELEMENT: {
XMLElement *pElement = ( XMLElement * ) pCur; XMLElement *pElement = ( XMLElement * ) pCur;
rStream << "<"; rStream << "<";
WriteString( rStream, pElement->GetName()); rStream << pElement->GetName().getStr();
if ( pElement->GetAttributeList()) if ( pElement->GetAttributeList())
for ( size_t j = 0; j < pElement->GetAttributeList()->size(); j++ ) { for ( size_t j = 0; j < pElement->GetAttributeList()->size(); j++ ) {
rStream << " "; rStream << " ";
OUString sData( (*pElement->GetAttributeList())[ j ]->GetName() ); OString sData( (*pElement->GetAttributeList())[ j ]->GetName() );
WriteString( rStream , XMLUtil::QuotHTML( sData ) ); rStream << XMLUtil::QuotHTML( sData ).getStr();
rStream << "=\""; rStream << "=\"";
sData = (*pElement->GetAttributeList())[ j ]->GetValue(); sData = (*pElement->GetAttributeList())[ j ]->GetValue();
WriteString( rStream , XMLUtil::QuotHTML( sData ) ); rStream << XMLUtil::QuotHTML( sData ).getStr();
rStream << "\""; rStream << "\"";
} }
if ( !pElement->GetChildList()) if ( !pElement->GetChildList())
...@@ -211,27 +209,27 @@ sal_Bool XMLFile::Write( ofstream &rStream , XMLNode *pCur ) ...@@ -211,27 +209,27 @@ sal_Bool XMLFile::Write( ofstream &rStream , XMLNode *pCur )
for ( size_t k = 0; k < pElement->GetChildList()->size(); k++ ) for ( size_t k = 0; k < pElement->GetChildList()->size(); k++ )
Write( rStream, (*pElement->GetChildList())[ k ] ); Write( rStream, (*pElement->GetChildList())[ k ] );
rStream << "</"; rStream << "</";
WriteString( rStream, pElement->GetName()); rStream << pElement->GetName().getStr();
rStream << ">"; rStream << ">";
} }
} }
break; break;
case XML_NODE_TYPE_DATA: { case XML_NODE_TYPE_DATA: {
XMLData *pData = ( XMLData * ) pCur; XMLData *pData = ( XMLData * ) pCur;
OUString sData( pData->GetData()); OString sData( pData->GetData());
WriteString( rStream, XMLUtil::QuotHTML( sData ) ); rStream << XMLUtil::QuotHTML( sData ).getStr();
} }
break; break;
case XML_NODE_TYPE_COMMENT: { case XML_NODE_TYPE_COMMENT: {
XMLComment *pComment = ( XMLComment * ) pCur; XMLComment *pComment = ( XMLComment * ) pCur;
rStream << "<!--"; rStream << "<!--";
WriteString( rStream, pComment->GetComment()); rStream << pComment->GetComment().getStr();
rStream << "-->"; rStream << "-->";
} }
break; break;
case XML_NODE_TYPE_DEFAULT: { case XML_NODE_TYPE_DEFAULT: {
XMLDefault *pDefault = ( XMLDefault * ) pCur; XMLDefault *pDefault = ( XMLDefault * ) pCur;
WriteString( rStream, pDefault->GetDefault()); rStream << pDefault->GetDefault().getStr();
} }
break; break;
} }
...@@ -242,7 +240,6 @@ sal_Bool XMLFile::Write( ofstream &rStream , XMLNode *pCur ) ...@@ -242,7 +240,6 @@ sal_Bool XMLFile::Write( ofstream &rStream , XMLNode *pCur )
void XMLFile::Print( XMLNode *pCur, sal_uInt16 nLevel ) void XMLFile::Print( XMLNode *pCur, sal_uInt16 nLevel )
{ {
if ( !pCur ) if ( !pCur )
Print( this ); Print( this );
else { else {
...@@ -256,19 +253,17 @@ void XMLFile::Print( XMLNode *pCur, sal_uInt16 nLevel ) ...@@ -256,19 +253,17 @@ void XMLFile::Print( XMLNode *pCur, sal_uInt16 nLevel )
case XML_NODE_TYPE_ELEMENT: { case XML_NODE_TYPE_ELEMENT: {
XMLElement *pElement = ( XMLElement * ) pCur; XMLElement *pElement = ( XMLElement * ) pCur;
fprintf( stdout, "<%s", OUStringToOString(pElement->GetName(), RTL_TEXTENCODING_UTF8).getStr()); fprintf( stdout, "<%s", pElement->GetName().getStr());
if ( pElement->GetAttributeList()) if ( pElement->GetAttributeList())
{ {
for (size_t j = 0; j < pElement->GetAttributeList()->size(); ++j) for (size_t j = 0; j < pElement->GetAttributeList()->size(); ++j)
{ {
OString aAttrName(OUStringToOString((*pElement->GetAttributeList())[j]->GetName(), const OString aAttrName((*pElement->GetAttributeList())[j]->GetName());
RTL_TEXTENCODING_UTF8));
if (!aAttrName.equalsIgnoreAsciiCase(XML_LANG)) if (!aAttrName.equalsIgnoreAsciiCase(XML_LANG))
{ {
fprintf( stdout, " %s=\"%s\"", fprintf( stdout, " %s=\"%s\"",
aAttrName.getStr(), aAttrName.getStr(),
OUStringToOString( (*pElement->GetAttributeList())[ j ]->GetValue(), (*pElement->GetAttributeList())[ j ]->GetValue().getStr());
RTL_TEXTENCODING_UTF8).getStr());
} }
} }
} }
...@@ -278,24 +273,23 @@ void XMLFile::Print( XMLNode *pCur, sal_uInt16 nLevel ) ...@@ -278,24 +273,23 @@ void XMLFile::Print( XMLNode *pCur, sal_uInt16 nLevel )
fprintf( stdout, ">" ); fprintf( stdout, ">" );
for ( size_t k = 0; k < pElement->GetChildList()->size(); k++ ) for ( size_t k = 0; k < pElement->GetChildList()->size(); k++ )
Print( (*pElement->GetChildList())[ k ], nLevel + 1 ); Print( (*pElement->GetChildList())[ k ], nLevel + 1 );
fprintf( stdout, "</%s>", OUStringToOString(pElement->GetName(), RTL_TEXTENCODING_UTF8).getStr()); fprintf( stdout, "</%s>", pElement->GetName().getStr());
} }
} }
break; break;
case XML_NODE_TYPE_DATA: { case XML_NODE_TYPE_DATA: {
XMLData *pData = ( XMLData * ) pCur; XMLData *pData = ( XMLData * ) pCur;
OUString sData = pData->GetData(); fprintf( stdout, "%s", pData->GetData().getStr());
fprintf( stdout, "%s", OUStringToOString(sData, RTL_TEXTENCODING_UTF8).getStr());
} }
break; break;
case XML_NODE_TYPE_COMMENT: { case XML_NODE_TYPE_COMMENT: {
XMLComment *pComment = ( XMLComment * ) pCur; XMLComment *pComment = ( XMLComment * ) pCur;
fprintf( stdout, "<!--%s-->", OUStringToOString(pComment->GetComment(), RTL_TEXTENCODING_UTF8).getStr()); fprintf( stdout, "<!--%s-->", pComment->GetComment().getStr());
} }
break; break;
case XML_NODE_TYPE_DEFAULT: { case XML_NODE_TYPE_DEFAULT: {
XMLDefault *pDefault = ( XMLDefault * ) pCur; XMLDefault *pDefault = ( XMLDefault * ) pCur;
fprintf( stdout, "%s", OUStringToOString(pDefault->GetDefault(), RTL_TEXTENCODING_UTF8).getStr()); fprintf( stdout, "%s", pDefault->GetDefault().getStr());
} }
break; break;
} }
...@@ -313,23 +307,20 @@ XMLFile::~XMLFile() ...@@ -313,23 +307,20 @@ XMLFile::~XMLFile()
} }
} }
/*****************************************************************************/ /*****************************************************************************/
XMLFile::XMLFile( const OUString &rFileName ) // the file name, empty if created from memory stream XMLFile::XMLFile( const OString &rFileName ) // the file name, empty if created from memory stream
/*****************************************************************************/ /*****************************************************************************/
: XMLParentNode( NULL ), : XMLParentNode( NULL ),
sFileName ( rFileName ), sFileName ( rFileName ),
ID ( "id" ),
OLDREF ( "oldref" ),
XML_LANG ( "xml-lang" ),
XMLStrings ( NULL ) XMLStrings ( NULL )
{ {
nodes_localize.insert( TagMap::value_type(OString(RTL_CONSTASCII_STRINGPARAM("bookmark")) , sal_True) ); nodes_localize.insert( TagMap::value_type(OString("bookmark") , sal_True) );
nodes_localize.insert( TagMap::value_type(OString(RTL_CONSTASCII_STRINGPARAM("variable")) , sal_True) ); nodes_localize.insert( TagMap::value_type(OString("variable") , sal_True) );
nodes_localize.insert( TagMap::value_type(OString(RTL_CONSTASCII_STRINGPARAM("paragraph")) , sal_True) ); nodes_localize.insert( TagMap::value_type(OString("paragraph") , sal_True) );
nodes_localize.insert( TagMap::value_type(OString(RTL_CONSTASCII_STRINGPARAM("alt")) , sal_True) ); nodes_localize.insert( TagMap::value_type(OString("alt") , sal_True) );
nodes_localize.insert( TagMap::value_type(OString(RTL_CONSTASCII_STRINGPARAM("caption")) , sal_True) ); nodes_localize.insert( TagMap::value_type(OString("caption") , sal_True) );
nodes_localize.insert( TagMap::value_type(OString(RTL_CONSTASCII_STRINGPARAM("title")) , sal_True) ); nodes_localize.insert( TagMap::value_type(OString("title") , sal_True) );
nodes_localize.insert( TagMap::value_type(OString(RTL_CONSTASCII_STRINGPARAM("link")) , sal_True) ); nodes_localize.insert( TagMap::value_type(OString("link") , sal_True) );
} }
/*****************************************************************************/ /*****************************************************************************/
void XMLFile::Extract( XMLFile *pCur ) void XMLFile::Extract( XMLFile *pCur )
...@@ -350,18 +341,18 @@ void XMLFile::Extract( XMLFile *pCur ) ...@@ -350,18 +341,18 @@ void XMLFile::Extract( XMLFile *pCur )
/*****************************************************************************/ /*****************************************************************************/
void XMLFile::InsertL10NElement( XMLElement* pElement ){ void XMLFile::InsertL10NElement( XMLElement* pElement ){
/*****************************************************************************/ /*****************************************************************************/
OString tmpStr,id,language(""); OString id,language("");
LangHashMap* elem; LangHashMap* elem;
if( pElement->GetAttributeList() != NULL ){ if( pElement->GetAttributeList() != NULL ){
for ( size_t j = 0; j < pElement->GetAttributeList()->size(); j++ ) for ( size_t j = 0; j < pElement->GetAttributeList()->size(); j++ )
{ {
tmpStr=OUStringToOString((*pElement->GetAttributeList())[ j ]->GetName(), RTL_TEXTENCODING_UTF8); const OString tmpStr((*pElement->GetAttributeList())[ j ]->GetName());
if (tmpStr == ID) { // Get the "id" Attribute if (tmpStr == ID) { // Get the "id" Attribute
id = OUStringToOString((*pElement->GetAttributeList())[ j ]->GetValue(),RTL_TEXTENCODING_UTF8); id = (*pElement->GetAttributeList())[ j ]->GetValue();
} }
if (tmpStr == XML_LANG) { // Get the "xml-lang" Attribute if (tmpStr == XML_LANG) { // Get the "xml-lang" Attribute
language = OUStringToOString((*pElement->GetAttributeList())[j]->GetValue(),RTL_TEXTENCODING_UTF8); language = (*pElement->GetAttributeList())[j]->GetValue();
} }
} }
...@@ -382,7 +373,7 @@ void XMLFile::InsertL10NElement( XMLElement* pElement ){ ...@@ -382,7 +373,7 @@ void XMLFile::InsertL10NElement( XMLElement* pElement ){
elem=pos->second; elem=pos->second;
if ( (*elem)[ language ] ) if ( (*elem)[ language ] )
{ {
fprintf(stdout,"Error: Duplicated entry. ID = %s LANG = %s in File %s\n", id.getStr(), language.getStr(), OUStringToOString(sFileName, RTL_TEXTENCODING_ASCII_US).getStr() ); fprintf(stdout,"Error: Duplicated entry. ID = %s LANG = %s in File %s\n", id.getStr(), language.getStr(), sFileName.getStr() );
exit( -1 ); exit( -1 );
} }
(*elem)[ language ]=pElement; (*elem)[ language ]=pElement;
...@@ -393,9 +384,6 @@ XMLFile::XMLFile( const XMLFile& obj ) ...@@ -393,9 +384,6 @@ XMLFile::XMLFile( const XMLFile& obj )
/*****************************************************************************/ /*****************************************************************************/
: XMLParentNode( obj ), : XMLParentNode( obj ),
sFileName ( obj.sFileName ), sFileName ( obj.sFileName ),
ID ( "id" ),
OLDREF ( "oldref" ),
XML_LANG ( "xml-lang" ),
XMLStrings ( NULL ) XMLStrings ( NULL )
{ {
if( this!=&obj ) if( this!=&obj )
...@@ -456,24 +444,24 @@ void XMLFile::SearchL10NElements( XMLParentNode *pCur , int pos) ...@@ -456,24 +444,24 @@ void XMLFile::SearchL10NElements( XMLParentNode *pCur , int pos)
break; break;
case XML_NODE_TYPE_ELEMENT: { case XML_NODE_TYPE_ELEMENT: {
XMLElement *pElement = ( XMLElement * ) pCur; XMLElement *pElement = ( XMLElement * ) pCur;
OString sName(OUStringToOString(pElement->GetName(), RTL_TEXTENCODING_ASCII_US).toAsciiLowerCase()); const OString sName(pElement->GetName().toAsciiLowerCase());
OString language,tmpStrVal,oldref; OString language,tmpStrVal,oldref;
if ( pElement->GetAttributeList()) if ( pElement->GetAttributeList())
{ {
for ( size_t j = 0 , cnt = pElement->GetAttributeList()->size(); j < cnt && bInsert; ++j ) for ( size_t j = 0 , cnt = pElement->GetAttributeList()->size(); j < cnt && bInsert; ++j )
{ {
const OString tmpStr = OUStringToOString((*pElement->GetAttributeList())[j]->GetName(), RTL_TEXTENCODING_UTF8); const OString tmpStr = (*pElement->GetAttributeList())[j]->GetName();
if (tmpStr == "id") { if (tmpStr == ID) {
tmpStrVal=OUStringToOString( (*pElement->GetAttributeList())[ j ]->GetValue(),RTL_TEXTENCODING_UTF8 ); tmpStrVal=(*pElement->GetAttributeList())[ j ]->GetValue();
} }
if (tmpStr == "localize") { if (tmpStr == "localize") {
bInsert=false; bInsert=false;
} }
if (tmpStr == XML_LANG) { // Get the "xml-lang" Attribute if (tmpStr == XML_LANG) { // Get the "xml-lang" Attribute
language=OUStringToOString( (*pElement->GetAttributeList())[ j ]->GetValue(),RTL_TEXTENCODING_UTF8 ); language=(*pElement->GetAttributeList())[ j ]->GetValue();
} }
if (tmpStr == OLDREF) { // Get the "oldref" Attribute if (tmpStr == OLDREF) { // Get the "oldref" Attribute
oldref=OUStringToOString( (*pElement->GetAttributeList())[ j ]->GetValue(),RTL_TEXTENCODING_UTF8 ); oldref=(*pElement->GetAttributeList())[ j ]->GetValue();
} }
} }
pElement->SetLanguageId ( language ); pElement->SetLanguageId ( language );
...@@ -526,19 +514,16 @@ bool XMLFile::CheckExportStatus( XMLParentNode *pCur ) ...@@ -526,19 +514,16 @@ bool XMLFile::CheckExportStatus( XMLParentNode *pCur )
break; break;
case XML_NODE_TYPE_ELEMENT: { case XML_NODE_TYPE_ELEMENT: {
XMLElement *pElement = ( XMLElement * ) pCur; XMLElement *pElement = ( XMLElement * ) pCur;
OString sName(OUStringToOString(pElement->GetName(), RTL_TEXTENCODING_ASCII_US)); if (pElement->GetName().equalsIgnoreAsciiCase("TOPIC"))
if (sName.equalsIgnoreAsciiCase("TOPIC"))
{ {
if ( pElement->GetAttributeList()) if ( pElement->GetAttributeList())
{ {
for (size_t j = 0 , cnt = pElement->GetAttributeList()->size(); j < cnt && bInsert; ++j) for (size_t j = 0 , cnt = pElement->GetAttributeList()->size(); j < cnt && bInsert; ++j)
{ {
const OString tmpStr(OUStringToOString((*pElement->GetAttributeList())[j]->GetName(), const OString tmpStr((*pElement->GetAttributeList())[j]->GetName());
RTL_TEXTENCODING_UTF8));
if (tmpStr.equalsIgnoreAsciiCase("STATUS")) if (tmpStr.equalsIgnoreAsciiCase("STATUS"))
{ {
OString tmpStrVal(OUStringToOString( (*pElement->GetAttributeList())[j]->GetValue(), const OString tmpStrVal((*pElement->GetAttributeList())[j]->GetValue());
RTL_TEXTENCODING_UTF8));
if (!tmpStrVal.equalsIgnoreAsciiCase("PUBLISH") && if (!tmpStrVal.equalsIgnoreAsciiCase("PUBLISH") &&
!tmpStrVal.equalsIgnoreAsciiCase("DEPRECATED")) !tmpStrVal.equalsIgnoreAsciiCase("DEPRECATED"))
{ {
...@@ -620,7 +605,7 @@ XMLElement& XMLElement::operator=(const XMLElement& obj){ ...@@ -620,7 +605,7 @@ XMLElement& XMLElement::operator=(const XMLElement& obj){
} }
/*****************************************************************************/ /*****************************************************************************/
void XMLElement::AddAttribute( const OUString &rAttribute, const OUString &rValue ) void XMLElement::AddAttribute( const OString &rAttribute, const OString &rValue )
/*****************************************************************************/ /*****************************************************************************/
{ {
if ( !pAttributes ) if ( !pAttributes )
...@@ -629,9 +614,9 @@ void XMLElement::AddAttribute( const OUString &rAttribute, const OUString &rValu ...@@ -629,9 +614,9 @@ void XMLElement::AddAttribute( const OUString &rAttribute, const OUString &rValu
} }
/*****************************************************************************/ /*****************************************************************************/
void XMLElement::ChangeLanguageTag( const OUString &rValue ) void XMLElement::ChangeLanguageTag( const OString &rValue )
{ {
SetLanguageId(OUStringToOString(rValue, RTL_TEXTENCODING_UTF8)); SetLanguageId(rValue);
if ( pAttributes ) if ( pAttributes )
{ {
for (size_t i = 0; i < pAttributes->size(); ++i) for (size_t i = 0; i < pAttributes->size(); ++i)
...@@ -653,7 +638,7 @@ void XMLElement::ChangeLanguageTag( const OUString &rValue ) ...@@ -653,7 +638,7 @@ void XMLElement::ChangeLanguageTag( const OUString &rValue )
{ {
pElem = static_cast< XMLElement* >(pNode); pElem = static_cast< XMLElement* >(pNode);
pElem->ChangeLanguageTag( rValue ); pElem->ChangeLanguageTag( rValue );
pElem->SetLanguageId(OUStringToOString(rValue, RTL_TEXTENCODING_UTF8)); pElem->SetLanguageId(rValue);
pElem = NULL; pElem = NULL;
pNode = NULL; pNode = NULL;
} }
...@@ -676,18 +661,18 @@ XMLElement::~XMLElement() ...@@ -676,18 +661,18 @@ XMLElement::~XMLElement()
} }
/*****************************************************************************/ /*****************************************************************************/
OUString XMLElement::ToOUString(){ OString XMLElement::ToOString(){
/*****************************************************************************/ /*****************************************************************************/
OUStringBuffer* buffer = new OUStringBuffer(); OStringBuffer* buffer = new OStringBuffer();
Print(this,*buffer,true); Print(this,*buffer,true);
OUString result=buffer->makeStringAndClear(); OString result=buffer->makeStringAndClear();
OUString xy(result.getStr()); OString xy(result.getStr());
result=OUString(xy); result=OString(xy);
delete buffer; delete buffer;
return result; return result;
} }
/*****************************************************************************/ /*****************************************************************************/
void XMLElement::Print(XMLNode *pCur, OUStringBuffer& buffer , bool rootelement ){ void XMLElement::Print(XMLNode *pCur, OStringBuffer& buffer , bool rootelement ){
/*****************************************************************************/ /*****************************************************************************/
if(pCur!=NULL){ if(pCur!=NULL){
if(rootelement){ if(rootelement){
...@@ -709,49 +694,48 @@ void XMLElement::Print(XMLNode *pCur, OUStringBuffer& buffer , bool rootelement ...@@ -709,49 +694,48 @@ void XMLElement::Print(XMLNode *pCur, OUStringBuffer& buffer , bool rootelement
XMLElement *pElement = ( XMLElement * ) pCur; XMLElement *pElement = ( XMLElement * ) pCur;
if( !pElement->GetName().equalsIgnoreAsciiCase("comment") ){ if( !pElement->GetName().equalsIgnoreAsciiCase("comment") ){
buffer.append( OUString("<") ); buffer.append( "<" );
buffer.append( pElement->GetName() ); buffer.append( pElement->GetName() );
if ( pElement->GetAttributeList()){ if ( pElement->GetAttributeList()){
for ( size_t j = 0; j < pElement->GetAttributeList()->size(); j++ ){ for ( size_t j = 0; j < pElement->GetAttributeList()->size(); j++ ){
OUString aAttrName( (*pElement->GetAttributeList())[ j ]->GetName() ); const OString aAttrName( (*pElement->GetAttributeList())[ j ]->GetName() );
if( !aAttrName.equalsIgnoreAsciiCase( "xml-lang" ) ) { if( !aAttrName.equalsIgnoreAsciiCase( "xml-lang" ) ) {
buffer.append( OUString(" ") ); buffer.append( " " );
buffer.append( aAttrName ); buffer.append( aAttrName );
buffer.append( OUString("=") ); buffer.append( "=" );
buffer.append( OUString("\"") ); buffer.append( "\"" );
buffer.append( (*pElement->GetAttributeList())[ j ]->GetValue() ); buffer.append( (*pElement->GetAttributeList())[ j ]->GetValue() );
buffer.append( OUString("\"") ); buffer.append( "\"" );
} }
} }
} }
if ( !pElement->GetChildList()) if ( !pElement->GetChildList())
buffer.append( OUString("/>") ); buffer.append( "/>" );
else { else {
buffer.append( OUString(">") ); buffer.append( ">" );
XMLChildNode* tmp=NULL; XMLChildNode* tmp=NULL;
for ( size_t k = 0; k < pElement->GetChildList()->size(); k++ ){ for ( size_t k = 0; k < pElement->GetChildList()->size(); k++ ){
tmp = (*pElement->GetChildList())[ k ]; tmp = (*pElement->GetChildList())[ k ];
Print( tmp, buffer , false); Print( tmp, buffer , false);
} }
buffer.append( OUString("</") ); buffer.append( "</" );
buffer.append( pElement->GetName() ); buffer.append( pElement->GetName() );
buffer.append( OUString(">") ); buffer.append( ">" );
} }
} }
} }
break; break;
case XML_NODE_TYPE_DATA: { case XML_NODE_TYPE_DATA: {
XMLData *pData = ( XMLData * ) pCur; XMLData *pData = ( XMLData * ) pCur;
OUString sData = pData->GetData(); buffer.append( pData->GetData() );
buffer.append( sData );
} }
break; break;
case XML_NODE_TYPE_COMMENT: { case XML_NODE_TYPE_COMMENT: {
XMLComment *pComment = ( XMLComment * ) pCur; XMLComment *pComment = ( XMLComment * ) pCur;
buffer.append( OUString("<!--") ); buffer.append( "<!--" );
buffer.append( pComment->GetComment() ); buffer.append( pComment->GetComment() );
buffer.append( OUString("-->") ); buffer.append( "-->" );
} }
break; break;
case XML_NODE_TYPE_DEFAULT: { case XML_NODE_TYPE_DEFAULT: {
...@@ -789,7 +773,7 @@ XMLData& XMLData::operator=(const XMLData& obj){ ...@@ -789,7 +773,7 @@ XMLData& XMLData::operator=(const XMLData& obj){
return *this; return *this;
} }
/*****************************************************************************/ /*****************************************************************************/
void XMLData::AddData( const OUString &rData) { void XMLData::AddData( const OString &rData) {
/*****************************************************************************/ /*****************************************************************************/
sData += rData; sData += rData;
} }
...@@ -858,15 +842,13 @@ XMLDefault& XMLDefault::operator=(const XMLDefault& obj){ ...@@ -858,15 +842,13 @@ XMLDefault& XMLDefault::operator=(const XMLDefault& obj){
// class SimpleXMLParser // class SimpleXMLParser
// //
#define XML_CHAR_TO_OUSTRING(x) OStringToOUString(OString(x), RTL_TEXTENCODING_UTF8)
#define XML_CHAR_N_TO_OUSTRING(x,n) OStringToOUString(OString(x,n), RTL_TEXTENCODING_UTF8 )
namespace namespace
{ {
static OUString lcl_pathnameToAbsoluteUrl(const OUString& rPathname) { static OUString lcl_pathnameToAbsoluteUrl(const OString& rPathname) {
OUString sPath = OStringToOUString(rPathname, RTL_TEXTENCODING_UTF8 );
OUString sUrl; OUString sUrl;
if (osl::FileBase::getFileURLFromSystemPath(rPathname, sUrl) if (osl::FileBase::getFileURLFromSystemPath(sPath, sUrl)
!= osl::FileBase::E_None) != osl::FileBase::E_None)
{ {
std::cerr << "Error: Cannot convert input pathname to URL\n"; std::cerr << "Error: Cannot convert input pathname to URL\n";
...@@ -954,29 +936,21 @@ void SimpleXMLParser::StartElement( ...@@ -954,29 +936,21 @@ void SimpleXMLParser::StartElement(
const XML_Char *name, const XML_Char **atts ) const XML_Char *name, const XML_Char **atts )
/*****************************************************************************/ /*****************************************************************************/
{ {
OUString sElementName = OUString( XML_CHAR_TO_OUSTRING( name )); XMLElement *pElement = new XMLElement( OString(name), ( XMLParentNode * ) pCurNode );
XMLElement *pElement = new XMLElement( sElementName, ( XMLParentNode * ) pCurNode );
pCurNode = pElement; pCurNode = pElement;
pCurData = NULL; pCurData = NULL;
int i = 0; int i = 0;
while( atts[i] ) { while( atts[i] ) {
pElement->AddAttribute( pElement->AddAttribute( atts[ i ], atts[ i + 1 ] );
OUString( XML_CHAR_TO_OUSTRING( atts[ i ] )),
OUString( XML_CHAR_TO_OUSTRING( atts[ i + 1 ] )));
i += 2; i += 2;
} }
} }
/*****************************************************************************/ /*****************************************************************************/
void SimpleXMLParser::EndElement( const XML_Char *name ) void SimpleXMLParser::EndElement( const XML_Char * /*name*/ )
/*****************************************************************************/ /*****************************************************************************/
{ {
// This variable is not used at all, but the sax C interface can't be changed
// To prevent warnings this dummy assignment is used
// +++
(void) name;
pCurNode = pCurNode->GetParent(); pCurNode = pCurNode->GetParent();
pCurData = NULL; pCurData = NULL;
} }
...@@ -987,13 +961,11 @@ void SimpleXMLParser::CharacterData( ...@@ -987,13 +961,11 @@ void SimpleXMLParser::CharacterData(
/*****************************************************************************/ /*****************************************************************************/
{ {
if ( !pCurData ){ if ( !pCurData ){
OUString x = XML_CHAR_N_TO_OUSTRING( s, len ); OString x( s, len );
XMLUtil::UnQuotHTML(x); pCurData = new XMLData( helper::UnQuotHTML(x) , pCurNode );
pCurData = new XMLData( x , pCurNode );
}else{ }else{
OUString x = XML_CHAR_N_TO_OUSTRING( s, len ); OString x( s, len );
XMLUtil::UnQuotHTML(x); pCurData->AddData( helper::UnQuotHTML(x) );
pCurData->AddData( x );
} }
} }
...@@ -1004,7 +976,7 @@ void SimpleXMLParser::Comment( ...@@ -1004,7 +976,7 @@ void SimpleXMLParser::Comment(
/*****************************************************************************/ /*****************************************************************************/
{ {
pCurData = NULL; pCurData = NULL;
new XMLComment( OUString( XML_CHAR_TO_OUSTRING( data )), pCurNode ); new XMLComment( OString( data ), pCurNode );
} }
/*****************************************************************************/ /*****************************************************************************/
...@@ -1013,18 +985,17 @@ void SimpleXMLParser::Default( ...@@ -1013,18 +985,17 @@ void SimpleXMLParser::Default(
/*****************************************************************************/ /*****************************************************************************/
{ {
pCurData = NULL; pCurData = NULL;
new XMLDefault( new XMLDefault(OString( s, len ), pCurNode );
OUString( XML_CHAR_N_TO_OUSTRING( s, len )), pCurNode );
} }
/*****************************************************************************/ /*****************************************************************************/
XMLFile *SimpleXMLParser::Execute( const OUString &rFileName, XMLFile* pXMLFileIn ) XMLFile *SimpleXMLParser::Execute( const OString &rFileName, XMLFile* pXMLFileIn )
/*****************************************************************************/ /*****************************************************************************/
{ {
aErrorInformation.eCode = XML_ERROR_NONE; aErrorInformation.eCode = XML_ERROR_NONE;
aErrorInformation.nLine = 0; aErrorInformation.nLine = 0;
aErrorInformation.nColumn = 0; aErrorInformation.nColumn = 0;
aErrorInformation.sMessage = OUString( "ERROR: Unable to open file "); aErrorInformation.sMessage = "ERROR: Unable to open file ";
aErrorInformation.sMessage += rFileName; aErrorInformation.sMessage += rFileName;
OUString aFileURL(lcl_pathnameToAbsoluteUrl(rFileName)); OUString aFileURL(lcl_pathnameToAbsoluteUrl(rFileName));
...@@ -1057,12 +1028,10 @@ XMLFile *SimpleXMLParser::Execute( const OUString &rFileName, XMLFile* pXMLFileI ...@@ -1057,12 +1028,10 @@ XMLFile *SimpleXMLParser::Execute( const OUString &rFileName, XMLFile* pXMLFileI
aErrorInformation.nLine = 0; aErrorInformation.nLine = 0;
aErrorInformation.nColumn = 0; aErrorInformation.nColumn = 0;
if ( !pXMLFile->GetName().isEmpty()) { if ( !pXMLFile->GetName().isEmpty()) {
aErrorInformation.sMessage = OUString( "File "); aErrorInformation.sMessage = "File " + pXMLFile->GetName() + " parsed successfully";
aErrorInformation.sMessage += pXMLFile->GetName();
aErrorInformation.sMessage += OUString( " parsed successfully");
} }
else else
aErrorInformation.sMessage = OUString( "XML-File parsed successfully"); aErrorInformation.sMessage = "XML-File parsed successfully";
if (!XML_Parse(aParser, reinterpret_cast< char * >(p), s, true)) if (!XML_Parse(aParser, reinterpret_cast< char * >(p), s, true))
{ {
...@@ -1070,84 +1039,81 @@ XMLFile *SimpleXMLParser::Execute( const OUString &rFileName, XMLFile* pXMLFileI ...@@ -1070,84 +1039,81 @@ XMLFile *SimpleXMLParser::Execute( const OUString &rFileName, XMLFile* pXMLFileI
aErrorInformation.nLine = XML_GetErrorLineNumber( aParser ); aErrorInformation.nLine = XML_GetErrorLineNumber( aParser );
aErrorInformation.nColumn = XML_GetErrorColumnNumber( aParser ); aErrorInformation.nColumn = XML_GetErrorColumnNumber( aParser );
aErrorInformation.sMessage = OUString( "ERROR: "); aErrorInformation.sMessage = "ERROR: ";
if ( !pXMLFile->GetName().isEmpty()) if ( !pXMLFile->GetName().isEmpty())
aErrorInformation.sMessage += pXMLFile->GetName(); aErrorInformation.sMessage += pXMLFile->GetName();
else else
aErrorInformation.sMessage += OUString( "XML-File ("); aErrorInformation.sMessage += OString( "XML-File (");
aErrorInformation.sMessage += OUString::number( aErrorInformation.sMessage +=
sal::static_int_cast< sal_Int64 >(aErrorInformation.nLine)); OString::number(sal::static_int_cast< sal_Int64 >(aErrorInformation.nLine)) + "," +
aErrorInformation.sMessage += OUString( ","); OString::number(sal::static_int_cast< sal_Int64 >(aErrorInformation.nColumn)) + "): ";
aErrorInformation.sMessage += OUString::number(
sal::static_int_cast< sal_Int64 >(aErrorInformation.nColumn));
aErrorInformation.sMessage += OUString( "): ");
switch (aErrorInformation.eCode) { switch (aErrorInformation.eCode) {
case XML_ERROR_NO_MEMORY: case XML_ERROR_NO_MEMORY:
aErrorInformation.sMessage += OUString( "No memory"); aErrorInformation.sMessage += "No memory";
break; break;
case XML_ERROR_SYNTAX: case XML_ERROR_SYNTAX:
aErrorInformation.sMessage += OUString( "Syntax"); aErrorInformation.sMessage += "Syntax";
break; break;
case XML_ERROR_NO_ELEMENTS: case XML_ERROR_NO_ELEMENTS:
aErrorInformation.sMessage += OUString( "No elements"); aErrorInformation.sMessage += "No elements";
break; break;
case XML_ERROR_INVALID_TOKEN: case XML_ERROR_INVALID_TOKEN:
aErrorInformation.sMessage += OUString( "Invalid token"); aErrorInformation.sMessage += "Invalid token";
break; break;
case XML_ERROR_UNCLOSED_TOKEN: case XML_ERROR_UNCLOSED_TOKEN:
aErrorInformation.sMessage += OUString( "Unclosed token"); aErrorInformation.sMessage += "Unclosed token";
break; break;
case XML_ERROR_PARTIAL_CHAR: case XML_ERROR_PARTIAL_CHAR:
aErrorInformation.sMessage += OUString( "Partial char"); aErrorInformation.sMessage += "Partial char";
break; break;
case XML_ERROR_TAG_MISMATCH: case XML_ERROR_TAG_MISMATCH:
aErrorInformation.sMessage += OUString( "Tag mismatch"); aErrorInformation.sMessage += "Tag mismatch";
break; break;
case XML_ERROR_DUPLICATE_ATTRIBUTE: case XML_ERROR_DUPLICATE_ATTRIBUTE:
aErrorInformation.sMessage += OUString( "Dublicat attribute"); aErrorInformation.sMessage += "Dublicat attribute";
break; break;
case XML_ERROR_JUNK_AFTER_DOC_ELEMENT: case XML_ERROR_JUNK_AFTER_DOC_ELEMENT:
aErrorInformation.sMessage += OUString( "Junk after doc element"); aErrorInformation.sMessage += "Junk after doc element";
break; break;
case XML_ERROR_PARAM_ENTITY_REF: case XML_ERROR_PARAM_ENTITY_REF:
aErrorInformation.sMessage += OUString( "Param entity ref"); aErrorInformation.sMessage += "Param entity ref";
break; break;
case XML_ERROR_UNDEFINED_ENTITY: case XML_ERROR_UNDEFINED_ENTITY:
aErrorInformation.sMessage += OUString( "Undefined entity"); aErrorInformation.sMessage += "Undefined entity";
break; break;
case XML_ERROR_RECURSIVE_ENTITY_REF: case XML_ERROR_RECURSIVE_ENTITY_REF:
aErrorInformation.sMessage += OUString( "Recursive entity ref"); aErrorInformation.sMessage += "Recursive entity ref";
break; break;
case XML_ERROR_ASYNC_ENTITY: case XML_ERROR_ASYNC_ENTITY:
aErrorInformation.sMessage += OUString( "Async_entity"); aErrorInformation.sMessage += "Async_entity";
break; break;
case XML_ERROR_BAD_CHAR_REF: case XML_ERROR_BAD_CHAR_REF:
aErrorInformation.sMessage += OUString( "Bad char ref"); aErrorInformation.sMessage += "Bad char ref";
break; break;
case XML_ERROR_BINARY_ENTITY_REF: case XML_ERROR_BINARY_ENTITY_REF:
aErrorInformation.sMessage += OUString( "Binary entity"); aErrorInformation.sMessage += "Binary entity";
break; break;
case XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF: case XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF:
aErrorInformation.sMessage += OUString( "Attribute external entity ref"); aErrorInformation.sMessage += "Attribute external entity ref";
break; break;
case XML_ERROR_MISPLACED_XML_PI: case XML_ERROR_MISPLACED_XML_PI:
aErrorInformation.sMessage += OUString( "Misplaced xml pi"); aErrorInformation.sMessage += "Misplaced xml pi";
break; break;
case XML_ERROR_UNKNOWN_ENCODING: case XML_ERROR_UNKNOWN_ENCODING:
aErrorInformation.sMessage += OUString( "Unknown encoding"); aErrorInformation.sMessage += "Unknown encoding";
break; break;
case XML_ERROR_INCORRECT_ENCODING: case XML_ERROR_INCORRECT_ENCODING:
aErrorInformation.sMessage += OUString( "Incorrect encoding"); aErrorInformation.sMessage += "Incorrect encoding";
break; break;
case XML_ERROR_UNCLOSED_CDATA_SECTION: case XML_ERROR_UNCLOSED_CDATA_SECTION:
aErrorInformation.sMessage += OUString( "Unclosed cdata section"); aErrorInformation.sMessage += "Unclosed cdata section";
break; break;
case XML_ERROR_EXTERNAL_ENTITY_HANDLING: case XML_ERROR_EXTERNAL_ENTITY_HANDLING:
aErrorInformation.sMessage += OUString( "External entity handling"); aErrorInformation.sMessage += "External entity handling";
break; break;
case XML_ERROR_NOT_STANDALONE: case XML_ERROR_NOT_STANDALONE:
aErrorInformation.sMessage += OUString( "Not standalone"); aErrorInformation.sMessage += "Not standalone";
break; break;
case XML_ERROR_NONE: case XML_ERROR_NONE:
break; break;
...@@ -1207,7 +1173,7 @@ static icu::UnicodeString lcl_QuotRange( ...@@ -1207,7 +1173,7 @@ static icu::UnicodeString lcl_QuotRange(
static bool lcl_isTag( const icu::UnicodeString& rString ) static bool lcl_isTag( const icu::UnicodeString& rString )
{ {
const int nSize = 12; static const int nSize = 12;
static const icu::UnicodeString vTags[nSize] = { static const icu::UnicodeString vTags[nSize] = {
"ahelp", "link", "item", "emph", "defaultinline", "ahelp", "link", "item", "emph", "defaultinline",
"switchinline", "caseinline", "variable", "switchinline", "caseinline", "variable",
...@@ -1225,7 +1191,7 @@ static bool lcl_isTag( const icu::UnicodeString& rString ) ...@@ -1225,7 +1191,7 @@ static bool lcl_isTag( const icu::UnicodeString& rString )
} /// anonymous namespace } /// anonymous namespace
OUString XMLUtil::QuotHTML( const OUString &rString ) OString XMLUtil::QuotHTML( const OString &rString )
{ {
if( rString.trim().isEmpty() ) if( rString.trim().isEmpty() )
return rString; return rString;
...@@ -1238,9 +1204,10 @@ OUString XMLUtil::QuotHTML( const OUString &rString ) ...@@ -1238,9 +1204,10 @@ OUString XMLUtil::QuotHTML( const OUString &rString )
reinterpret_cast<const UChar*>(sPattern.getStr()), reinterpret_cast<const UChar*>(sPattern.getStr()),
sPattern.getLength() ); sPattern.getLength() );
const OUString sOUSource = OStringToOUString(rString, RTL_TEXTENCODING_UTF8);
icu::UnicodeString sSource( icu::UnicodeString sSource(
reinterpret_cast<const UChar*>( reinterpret_cast<const UChar*>(
rString.getStr()), rString.getLength() ); sOUSource.getStr()), sOUSource.getLength() );
RegexMatcher aRegexMatcher( sSearchPat, nSearchFlags, nIcuErr ); RegexMatcher aRegexMatcher( sSearchPat, nSearchFlags, nIcuErr );
aRegexMatcher.reset( sSource ); aRegexMatcher.reset( sSource );
...@@ -1268,13 +1235,10 @@ OUString XMLUtil::QuotHTML( const OUString &rString ) ...@@ -1268,13 +1235,10 @@ OUString XMLUtil::QuotHTML( const OUString &rString )
if( nEndPos < sSource.length() ) if( nEndPos < sSource.length() )
sReturn.append(lcl_QuotRange(sSource, nEndPos, sSource.length())); sReturn.append(lcl_QuotRange(sSource, nEndPos, sSource.length()));
sReturn.append('\0'); sReturn.append('\0');
return OUString(reinterpret_cast<const sal_Unicode*>(sReturn.getBuffer())); return
} OUStringToOString(
OUString(reinterpret_cast<const sal_Unicode*>(sReturn.getBuffer())),
OUString XMLUtil::UnQuotHTML( const OUString& rString ) RTL_TEXTENCODING_UTF8);
{
const OString sString(OUStringToOString(rString, RTL_TEXTENCODING_UTF8));
return OStringToOUString(helper::UnQuotHTML(sString), RTL_TEXTENCODING_UTF8);
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment