验证 Qt 中的 XML 值输入?
Validate XML value input in Qt?
我想避免代码注入,所以如果 QLineEdit 中的字符串不包含 "dangerous" 个字符 f.e,我将 QValidator 子类化以进行检查。 <,>,&,",'。
有没有更简单的方法来验证给定字符串的输入?
谢谢你的提示。
myvalidator.h
extern class cXMLValueValidator : public QValidator{
Q_OBJECT
public:
explicit cXMLValueValidator(QObject *parent = 0);
virtual State validate(QString & input, int & pos) const;
};
myvalidator.cpp
QValidator::State cXMLValueValidator::validate(QString & input, int & pos) const {
if(input.isEmpty())
return Acceptable;
if(input.contains(QRegExp("[<>&\"\']")))
return Invalid;
return Acceptable;
}
实施:
QLineEdit* lineEdit = new QLineEdit();
lineEdit->setValidator(new cXMLValueValidator(lineEdit));
好的。除了您自己的 QValidator 之外,没有其他方法可以验证 xml 输入。
我想避免代码注入,所以如果 QLineEdit 中的字符串不包含 "dangerous" 个字符 f.e,我将 QValidator 子类化以进行检查。 <,>,&,",'。 有没有更简单的方法来验证给定字符串的输入? 谢谢你的提示。
myvalidator.h
extern class cXMLValueValidator : public QValidator{
Q_OBJECT
public:
explicit cXMLValueValidator(QObject *parent = 0);
virtual State validate(QString & input, int & pos) const;
};
myvalidator.cpp
QValidator::State cXMLValueValidator::validate(QString & input, int & pos) const {
if(input.isEmpty())
return Acceptable;
if(input.contains(QRegExp("[<>&\"\']")))
return Invalid;
return Acceptable;
}
实施:
QLineEdit* lineEdit = new QLineEdit();
lineEdit->setValidator(new cXMLValueValidator(lineEdit));
好的。除了您自己的 QValidator 之外,没有其他方法可以验证 xml 输入。