当前位置: 首页 > news >正文

能用织梦做动态网站么seo网页推广

能用织梦做动态网站么,seo网页推广,精品课程教学网站,河北省住建和城乡建设厅网站首页背景 本来想解析VS的项目配置文件(*.vcxproj)&#xff0c;配合cppclean来发现多余的#incldue。 结果发现低估了难度&#xff0c;VS会间接引入许多目录。 略有不甘&#xff0c;暂且作为一个解析XML文件的示例。 代码 VSProjectParser.h #include <QVector> #include…

背景

本来想解析VS的项目配置文件(*.vcxproj),配合cppclean来发现多余的#incldue

结果发现低估了难度,VS会间接引入许多目录。

略有不甘,暂且作为一个解析XML文件的示例。

代码

VSProjectParser.h

#include <QVector>
#include <memory>class VSProjectParser {
public:VSProjectParser (const QString &vsProjectFilePath);QVector<QString> getIncludeDirectoriesRealPath ();QVector<QString> getCppFilesRealPath ();QVector<QString> getHeadFilesRealPath ();private:class Impl;std::shared_ptr<Impl> m_impl = nullptr;
};

VSProjectParser.cpp

#include "VSProjectParser.h"#include <QDebug>
#include <QDir>
#include <QDomDocument>
#include <QDomElement>
#include <QDomNode>
#include <QFile>
#include <QFileInfo>
#include <QHash>
#include <memory>class Document {
public:Document (const QString &projFilePath);QVector<QString> extractCppFiles ();QVector<QString> extractHeadFiles ();private:void extractTasgInfo ();QHash<QString, QVector<QString>> m_tagsInfo = {};QString m_projFilePath						= "";
};class VSProjectParser::Impl {
public:Impl (const QString &vsProjectFilePath) : m_vsProjectFileInfo (vsProjectFilePath), m_document (vsProjectFilePath){}QFileInfo m_vsProjectFileInfo = "";Document m_document;
};Document::Document (const QString &projFilePath) : m_projFilePath (projFilePath)
{extractTasgInfo();
}QVector<QString>
Document::extractCppFiles()
{QVector<QString> cppTags {"ClCompile"};QVector<QString> ret;for (QString tag : cppTags) {if (m_tagsInfo.contains (tag))ret.append (m_tagsInfo.value (tag));}return ret;
}QVector<QString>
Document::extractHeadFiles()
{QVector<QString> headTags {"ClInclude", "QtMoc"};QVector<QString> ret;for (QString tag : headTags) {if (m_tagsInfo.contains (tag))ret.append (m_tagsInfo.value (tag));}return ret;
}void
Document::extractTasgInfo()
{QFile file (m_projFilePath);if (!file.open (QIODevice::ReadOnly)) {qDebug() << "Failed to open the file.";return;}QDomDocument doc;if (!doc.setContent (&file)) {qDebug() << "Failed to parse the file into a DOM tree.";return;}file.close();QDomElement root = doc.documentElement();QHash<QString, QVector<QString>> tags_with_include_attribute;constexpr auto ATTR_INCLUDE = "Include";QDomNodeList itemGroups = root.elementsByTagName ("ItemGroup");for (int i = 0; i < itemGroups.count(); ++i) {QDomNode itemGroup	  = itemGroups.at (i);QDomNodeList children = itemGroup.childNodes();for (int j = 0; j < children.count(); ++j) {QDomNode child = children.at (j);if (child.isElement()) {QDomElement element = child.toElement();QString tagName		= element.tagName();tags_with_include_attribute[tagName].push_back (element.attribute (ATTR_INCLUDE));}}}QVector<QString> keys;m_tagsInfo = tags_with_include_attribute;
}VSProjectParser::VSProjectParser (const QString &vsProjectFilePath) : m_impl (new Impl (vsProjectFilePath))
{
}QVector<QString>
VSProjectParser::getIncludeDirectoriesRealPath()
{QVector<QString> headers = getHeadFilesRealPath();QVector<QString> ret;for (QString &file : headers) {QFileInfo fileInfo (file);if (!fileInfo.exists()) {qDebug() << __FUNCTION__ << "File not found:" << file;continue;}ret.append (fileInfo.dir().absolutePath());}return ret;
}QVector<QString>
VSProjectParser::getCppFilesRealPath()
{QVector<QString> includes = m_impl->m_document.extractCppFiles();QVector<QString> ret;for (QString &file : includes) {file = m_impl->m_vsProjectFileInfo.dir().absolutePath() + "/" + file;QFileInfo fileInfo (file);if (fileInfo.exists())ret.append (fileInfo.absoluteFilePath());elseqDebug() << __FUNCTION__ << "File not found:" << file;}return ret;
}QVector<QString>
VSProjectParser::getHeadFilesRealPath()
{QVector<QString> includes = m_impl->m_document.extractHeadFiles();QVector<QString> ret;for (QString &file : includes) {file = m_impl->m_vsProjectFileInfo.dir().absolutePath() + "/" + file;QFileInfo fileInfo (file);if (fileInfo.exists())ret.append (fileInfo.absoluteFilePath());elseqDebug() << __FUNCTION__ << "File not found:" << file;}return ret;
}
http://www.mmbaike.com/news/55011.html

相关文章:

  • 怎么做网站数据库网络营销推广的方式
  • wordpress always关键词优化好
  • 织梦做分类信息网站磁力屋 最好用
  • 胶南做网站英文网站seo发展前景
  • 游戏网站模百度精准引流推广
  • 媒体村网站建设网络营销期末总结
  • 备案号查询网站网址新浪体育最新消息
  • 北京市城乡建设委官方网站成都网站搜索排名优化公司
  • 设计公司推荐seo属于运营还是技术
  • 海口企业免费建站国内外搜索引擎大全
  • 做网站判多少年韩国今日特大新闻
  • 库尔勒北京网站建设app关键词推广
  • 管理咨询是做什么的seo外链工具下载
  • seo网站查询网络宣传推广方法
  • 在家办厂小型加工项目商丘seo教程
  • 无锡做推广的网站seo网站推广助理招聘
  • ftp网站 免费杭州百度优化
  • 贵州网站备案seo外包 杭州
  • dw做存资料网站淘宝搜索关键词查询工具
  • 跨境电商独立站是什么意思如何创建一个属于自己的网站
  • 做网站四百全包深圳seo
  • html5网站建站书百度seo是什么意思呢
  • 网站管理系统怎么做seo网络推广什么意思
  • 广西营销型网站公司网站源码下载
  • 怎么上传网站模板今日广州新闻头条
  • 江西建设信息网站英雄联盟世界排名
  • 政府采购网招标公告官网seo一般包括哪些内容
  • 深圳西乡建网站最新提升关键词排名软件
  • 需要推销自己做网站的公司网站app开发公司
  • 高毅资产网站谁做的怀化网站seo