#include <QCoreApplication>
#include <QDomDocument>
#include <QDomElement>
#include <QDomNodeList>
#include <QDir>
#include <QStringList>
#include <QIODevice>
#include <QDebug>
bool remvoeTsFileVanished(const QString & strSrc,const QString & strDest)
{
QDomDocument doc;
QString errorMsg;
int errorLine=0,errorColumn=0;
QFile iFile(strSrc);
iFile.open(QIODevice::ReadOnly);
//bool bPase = doc.setContent(&iFile,&errorMsg,&errorLine,&errorColumn);
QByteArray baContent = iFile.readAll();
//qDebug() << baContent;
bool bPase = doc.setContent(baContent,&errorMsg,&errorLine,&errorColumn);
if(!bPase)
{
qDebug() << errorMsg << errorLine << errorColumn;
return false;
}
iFile.close();
QDomElement elemntTS = doc.elementsByTagName("TS").at(0).toElement();
QDomNodeList nlContexts = elemntTS.elementsByTagName("context");
for(int i=0;i<nlContexts.count();i++)
{
QDomNode nodeContext = nlContexts.at(i);
QDomNodeList nlMessages = nodeContext.toElement().elementsByTagName("message");
int nCount = nlMessages.count();
for(int j=0;j<nlMessages.count();)
{
QDomNode nodeMessage = nlMessages.at(j);
QDomElement elementTranslation = nodeMessage.firstChildElement("translation");
if (elementTranslation.attribute("type") == "vanished")
{
nodeContext.removeChild(nodeMessage);
}
else
{
j++;
}
}
nlMessages = nodeContext.toElement().elementsByTagName("message");
nCount = nlMessages.count();
nCount = 0;
}
QFile iFileWrite(strDest);
if( !iFileWrite.open(QIODevice::ReadWrite|QIODevice::Truncate))
return false;
iFileWrite.write(doc.toByteArray());
//QTextStream out(&iFileWrite);
//out<<doc.toString();
//qDebug() << doc.toByteArray();
//qDebug() << doc.toString();
//qDebug() << doc.toString().toHtmlEscaped();
//QTextStream out(&iFileWrite);
//doc.save(out, 4);
iFileWrite.close();
return true;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
if(0)
{
QDir(".").mkdir("./template");
QStringList qmFiles = QDir(".").entryList(QStringList("*.ts"), QDir::Files, QDir::Name);
foreach (QString strSrc,qmFiles)
{
QString strDest = "./template"+strSrc;
bool bReturn = remvoeTsFileVanished(strSrc,strDest);
qDebug() << QString("process <%1> to <%2> %3").arg(strSrc).arg(strDest).arg(bReturn?"success":"fail");
}
}
QString strDest,strSrc;
if(argc > 1)
{
strSrc = QString(argv[1]);
strDest = QString(argv[1]);
}
if(argc > 2)
{
strDest = QString(argv[2]);
}
if(!strDest.isEmpty() && !strSrc.isEmpty())
{
bool bReturn = remvoeTsFileVanished(strSrc,strDest);
qDebug() << QString("process <%1> to <%2> %3").arg(strSrc).arg(strDest).arg(bReturn?"success":"fail");
}
else
{
qDebug() << "user for :exe srcFile [destFile]";
}
return 0;
return a.exec();
}