#include "xmlobj.h"
#include <QRegExp>
#include <QString>
// returns masked "<" ">" "&"
QString quotemeta(const QString &s)
{
QString r=s;
QRegExp rx("&(?!amp;)");
r.replace ( rx,"&");
rx.setPattern( ">");
r.replace ( rx,">");
rx.setPattern( "<");
r.replace ( rx,"<");
rx.setPattern( "\"");
r.replace ( rx,""");
return r;
}
QString unquotemeta(const QString &s)
{
QString r=s;
QRegExp rx("&)");
r.replace ( rx,"&");
rx.setPattern( ">");
r.replace ( rx,">");
rx.setPattern( "<");
r.replace ( rx,"<");
rx.setPattern( """);
r.replace ( rx,"\"");
return r;
}
QString quoteUmlaut(const QString &s)
{
QString r=s;
QRegExp rx( "ü");
r.replace ( rx,"ü");
rx.setPattern( "Ü");
r.replace ( rx,"Ü");
rx.setPattern( "ö");
r.replace ( rx,"ö");
rx.setPattern( "Ö");
r.replace ( rx,"Ö");
rx.setPattern( "ä");
r.replace ( rx,"ä");
rx.setPattern( "Ö");
r.replace ( rx,"Ä");
rx.setPattern( "ß");
r.replace ( rx,"ß");
rx.setPattern( "€");
r.replace ( rx,"€");
return r;
}
int XMLObj::actindent=0; // make instance of actindent
XMLObj::XMLObj()
{
indentwidth=4;
}
XMLObj::~XMLObj()
{
}
// returns <s at />
QString XMLObj::singleElement(QString s, QString at)
{
return indent() + "<" + s +" " + at +" " + "/>\n";
}
// returns <s>
QString XMLObj::beginElement(QString s)
{
return indent() + "<" + s + ">\n";
}
// returns <s at>
QString XMLObj::beginElement(QString s, QString at)
{
return indent() + "<" + s + " " + at + ">\n";
}
// returns </s>
QString XMLObj::endElement(QString s)
{
return indent() + "</" + s + ">\n";
}
// returns at="val"
QString XMLObj::attribut(QString at, QString val)
{
return " " + at + "=\"" + quotemeta (val) + "\"";
}
// returns <s> val </s>
QString XMLObj::valueElement(QString el, QString val)
{
return indent() + "<" + el + ">" + quotemeta(val) + "</" +el + ">\n";
}
// returns <s at> val </s>
QString XMLObj::valueElement(QString el, QString val, QString at)
{
return indent() + "<" + el + " " + at + ">" + quotemeta(val) + "</" +el + ">\n";
}
void XMLObj::incIndent()
{
actindent++;
}
void XMLObj::decIndent()
{
actindent--;
if (actindent<0) actindent=0;
}
QString XMLObj::indent()
{
QString s;
int i;
for (i=0; i<actindent*indentwidth; i++)
{
s= s + " ";
}
return s;
}