验证 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 输入。