首页 > 解决方案 > 验证 Qt 中的 XML 值输入?

问题描述

我想避免代码注入,因此我将 QValidator 子类化以进行检查,如果 QLineEdit 中的字符串不包含“危险”字符 fe <,>,&,",'。有没有更简单的方法来验证来自给定字符串的输入?谢谢你的提示。

myvalidator.h

extern class cXMLValueValidator : public QValidator{
  Q_OBJECT
public:
  explicit cXMLValueValidator(QObject *parent = 0);
  virtual State validate(QString & input, int & pos) const;
};

我的验证器.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));

标签: xmlqtvalidationqlineedit

解决方案


好的。除了您自己的 QValidator 之外,没有其他方法可以验证 xml 输入。


推荐阅读