65.9K
CodeProject 正在变化。 阅读更多。
Home

AppXmlViewer:介于 Doxygen 和原始 XML 之间

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.46/5 (4投票s)

2007年4月5日

CPOL

6分钟阅读

viewsIcon

35613

downloadIcon

436

用于在 DataGridView 中查看应用程序文档 XML 的实用工具。

Screenshot - AppXmlViewer.png

引言

文档是我们生活世界中最不受人喜爱的一方面。编写代码大部分时间都很有趣。但文档不知何故并不归类于“有趣”!然而,众所周知,记录代码是一个好习惯,即使只是为了防止您自己犯错!Visual Studio 2005 在让您更轻松地添加“边写边记录”的文档方面做了很多工作。您可以毫不费力地为

  • 构造函数
  • 属性
  • 方法
  • 方法参数
  • 方法返回值
  • 字段(如枚举)
  • ……等

一个类。从开发者的角度来看,这样做最有价值的回报是——所有描述性信息都会显示在令人惊叹的 **IntelliSense** 弹出窗口中。

编写这些描述的另一个隐藏好处是,只需在 Visual Studio 的 **Project > *app* Properties > Build**(其中 *app* 是您的应用程序名称)中勾选一个复选框,如下图所示……每次构建您的应用程序时,Visual Studio 都会生成一个包含您所有宝贵描述的 XML 文件。立即生成。

好消息

这就是好消息。事实上,您可以使用 **Doxygen** 和 **Sandcastle** 等工具来制作您的 *app.xml* 文件非常可展示的版本。

坏消息

坏消息是,使用 Doxygen 和 Sandcastle 等工具会涉及一些“额外”步骤。如果您不采取这些步骤,除非您喜欢 XML,否则自动生成的 XML **对用户来说并不友好**,因为它看起来像这样

<doc>
    <assembly>
        <name>VVX_AppXmlViewer</name>
    </assembly>
    <members>
        <member name="T:VVX_AppXmlViewer.Form_VVX_AppXmlView">
            <summary>
            Main form of this application
            </summary>
        </member>
        <member name="M:VVX_AppXmlViewer.Form_VVX_AppXmlView.#ctor">
            <summary>
            The only constructor for this form
            </summary>
        </member>
        <member name="M:VVX_AppXmlViewer.Form_VVX_AppXmlView.DoUpdateCaption">
            <summary>
            Refreshes the window's Caption/Title bar
            </summary>
        </member>
        <member name="M:VVX_AppXmlViewer.Form_VVX_AppXmlView.
                          DoNavigateToInfoPage">
            <summary>
            Moves up the directory tree and locates the info HTML file
            </summary>
        </member>
        <member name="M:VVX_AppXmlViewer.Form_VVX_AppXmlView.
                DoGridCustomization(System.Windows.Forms.DataGridView)">
            <summary>
            Normally invoked once at startup
            </summary>
            <param name="dgv">The DataGridView to be customized</param>
        </member>
        <member name="M:VVX_AppXmlViewer.Form_VVX_AppXmlView.DoGridPopulate
                 (System.Windows.Forms.DataGridView,VVX.AppXmlDoc)">
            <summary>
            Invoked after an AppXml file is opened by user to display its contents
            in a DataGridView
            </summary>
            <param name="dgv">DataGridView instance in which to display the data</param>
            <param name="appXmlDoc">instance of 
                    AppXmlDoc</param>
        </member>
    ...
    ...
    ...
    </members>
</doc>

AppXmlViewer 的需求

在上面提到的“好消息”和“坏消息”的极端之间似乎没有什么。但有时您可能会希望有些折衷方案,例如……

  1. 您需要快速浏览自己的 *app.xml* 文件,然后再将其发送给其他人,原因可能是为了通过 Doxygen 进行处理。
  2. 您从 CodeProject 等网站下载了源代码,其中附带了 *app.xml* 文件。
  3. 您的老板或同事要求您将所有描述性信息发送给他/她一份单一的文档(而不是一个网站)。
  4. ...

AppXmlViewer 的目标

  • 启动实用工具
  • 打开一个 *app.xml* 文件
  • 以用户友好的布局快速浏览它
  • 有时以几种明显的方式进行排序和/或过滤
  • 退出实用工具

然后继续做您最喜欢的事情!

免责声明

我之所以进行这个项目,是为了学习 Visual Studio 2005、C#、XML、DataGridView、应用程序文档 XML 等方面的知识。请注意:**没有任何内容经过适当或充分的测试**。更重要的是,很有可能您或其他人可以做得更好。因此,如果您使用此代码但无法获得预期结果,我可能帮不了您太多。从积极的一面来看,您拥有源代码和(尽管不易理解)微软的技术参考资料。

有用参考

使用应用程序

在执行任何操作之前,请务必阅读上面的免责声明。

主窗口

解决方案包含一个带有两个选项卡的标签控件

  • **AppDocXML** 在您打开 XML 文件后,会“按原样”显示它。
  • **AppDocTable** 在 DataGridView 表中显示 XML 文件的解析内容。它列出了 XML 中 member 节点的内容,并提取和显示以下列中的数据:
    • **#** 每个成员的编号,主要用于排序。
    • **Qualifier** 松散地描述成员(行),例如“Method”。
    • **Type** 通常是成员 name 属性的第一个字母。Mp 表示包含 param 数据类型和您提供的任何描述的行,Mr 表示包含您提供的 returns 描述的行。
    • **Namespace** 是成员所属的 namespace
    • **Class** 是成员所属的 class
    • **Name** 是成员(方法、属性等)的 name
    • **Summary** 是您提供的 summary 文本。

Application Screen Shot

过滤成员列表

您可以通过两种方式缩短成员列表:

  1. **View > Include > ...** 菜单命令允许您包含/排除各种 **Type** 的成员。
  2. 组合框列出了 XML 中找到的各种类。如果您选择 **All Classes**,则会列出所有适用的成员(即,基于“Include...”标准)。或者,只会列出与所选类匹配的成员。

打印

打印表格的支持有限。它很大程度上是从另一个 CodeProject 实用工具中直接引用的:《XmlStore 第二部分:打印 DataGridView 内容》。

创建 PDF

如果您希望根据 DataGridView 的内容创建 PDF,您可以使用 **File > Export > XmlStore** 菜单命令将内容导出,以创建 XmlStore 文件,然后使用 **使用 C# (.NET 2.0) 和 iTextSharp 创建 PDF 表格** 中提供的实用工具来创建 PDF、加密等。生成的 PDF 可能看起来像

后者还展示了水印文本和图像的使用。

需要集成 PDF 生成器?

我没有将 PDF 生成器集成到此实用工具中,部分原因是我不确定是否有兴趣,部分原因是它无法“开箱即用”——您需要从 SourceForge.net 下载相应的 *iTextSharp.DLL*。但是,如果足够多的人在本文下方的论坛上发表请求,我将尝试将 PDF 生成器构建到此实用工具中。

来源

此解决方案是使用 Visual Studio 2005 创建的。

构建解决方案

如果您拥有 Visual Studio 2005,那么您应该能够“开箱即用”地使用项目源代码——只需构建并运行。代码本身不是什么高科技。它有 reasonably documented。如果您没有 Visual Studio 2005,您将不得不请一位更有经验的朋友。(别问我,我还是个新手!我对 VB.NET 也一窍不通!)

代码模块

对新手(比如我)来说,代码的附带好处是:该项目包含 reasonably documented 且自解释的代码模块。运气好的话,它们可能有助于您了解如何使用子系统的某些功能。

VVX_AppDocXml.cs

VVX.AppDocXml 是一个用于翻译上述 UI 选项并解析 *app.XML* 文件的类。它包含一个主要方法 DoExtractMemberData(...)。它相当直接且 reasonably documented。它基本上构建了一个 ArrayList,其中包含另一个(也在同一模块中)相当简单的类 VVX.AppXmlMember

Form_VVX_AppXmlView.cs

这是该实用工具的窗体类。大部分内容都相当简单。值得注意的一个方法是 DoViewTableTabPageInit()。它使用 VVX.AppDocXml 来解析 *app.XML* 文件,然后填充 DataGridView

其他近期贡献

如果其中任何内容对您有帮助……

请考虑向我最喜欢的几个慈善机构之一捐款:**Year Up**,或向世界各地任何类似的非政府组织(NGO)捐款,它们无私地做好事并帮助有需要的人。少付出,多收获!

© . All rights reserved.