基于XML的Word文档格式智能识别

 

平安夜《微机接口》考试结束,马上开始干活。

目标

研究论文格式智能检查系统,开发在线论文管理网站,提供给指导老师、学生之间进行论文管理、指导、互动的一个平台,代替人工管理,更高效的完成任务。

功能模块

1)个人信息管理模块;
2)论文格式设置、检查管理模块;
3)在线答疑/留言模块;
4)学生论文选题模块;
5)老师提供论文选题模块;
6)毕业论文套表生成/编辑/查看/下载模块;
7)论文格式检查/自动更正模块:上传要检查的论文,系统读取提交的Word论文,并与系统中的标准格式进行匹配,提示不符合规范的文字和段落,并可自动更正。检查的格式的正文及各级标题的字体、大小、行距,表格的表头及表格,页面大小、页边距、页眉页脚、装订线位置。
8)毕业论文结束时,评审专家根据论文评审结果填写相应的评审意见表,答辩后填写答辩情况表并依据具体情况给予成绩评定。

系统结构

结合微软Office Word2003 以上版本对XML较好的支持特性,通过Word 文档和XML文档的相互转换,设计一个Word 文档录入和格式检测模型系统。

微软从Office Word 2003 开始已经针对XML 进行了完整设计,使其支持称为Word 标记语言(WordML)的原生XML词汇。开发者可以建立这种XML和可编程的代码来增强Word文档,并帮助用户建立和修改文档。通过重复使用模版内容、为如何格式化或完成文档实现业务规则、通过正式批准的过程路由(routing)文档等等过程。

三层:XML转换层、XML存储层、XML表现层

技术实现

1.整体文档http://www.microsoft.com/china/msdn/library/office/office/howManipulateOfficexml.mspx?mfr=true

2.部分代码

       private void button1_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
            //源文件
            string fileName = @"d:\test.docx";
            string content ;
            string contentType;
            CompressionOption option;
            PackageRelationshipCollection relations;

            //文档序列化存储类,相当于一个zip
            using (Package package = Package.Open(fileName, FileMode.Open, FileAccess.Read))
            {
                foreach (PackagePart part in package.GetParts())
                {
                    //寻找页脚所在的文件
                    if (part.Uri.OriginalString == "/word/footer2.xml")
                    {
                        StreamReader sr = new StreamReader(part.GetStream());
                        content = sr.ReadToEnd();
                        //替换内容
                        if (content != null)
                            content = content.Replace("http://www.google.cn", "http://www.cnblogs.com");
                        sr.Close();

                        contentType = part.ContentType;
                        option = part.CompressionOption;
                        relations = part.GetRelationships();

                        //删除 footer2.xml
                        package.DeletePart(part.Uri);

                        //创建一个新的 footer2.xml
                        Uri tempUri = PackUriHelper.CreatePartUri(new Uri("/word/footer2.xml", UriKind.Relative));
                        PackagePart tempPart = package.CreatePart(tempUri, contentType, option);

                        //将修改后的 footer2.xml
                        using (StreamWriter sw = new StreamWriter(tempPart.GetStream()))
                        {
                            sw.Write(content);
                            sw.Flush();
                            sw.Close();
                        }

                        //创建tempart与各XML文件之间的关系,非常重要
                        foreach (PackageRelationship relation in relations)
                        {
                            tempPart.CreateRelationship(relation.TargetUri, relation.TargetMode, relation.RelationshipType, relation.Id);
                        }

                        package.Close();

                        break;
                    }
                }

                //foreach (PackagePart part in package.GetParts())
                //{
                //    listView1.Items.Add(part.Uri.OriginalString);
                //    richTextBox1.AppendText("\n");
                //    richTextBox1.AppendText(new StreamReader(part.GetStream()).ReadToEnd());
                //}


                文档的内部结构
                //Uri docxUri = new Uri("/word/document.xml", UriKind.Relative);
                //PackagePart docxPart = package.GetPart(docxUri);
                //XmlDocument docxXmlDocument = new XmlDocument();
                读入到xml
                //docxXmlDocument.Load(docxPart.GetStream());
                //MessageBox.Show(docxXmlDocument.InnerText, "message");
                分析xml
                //package.Close();
            }
        }

3.引入System.IO.Packaging Namespace ,要添加C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0 目录下的 WindowsBase.dll

4.

 

参考

Microsoft Office Word 2003 中的 XML http://www.microsoft.com/china/msdn/library/office/office/XMLOfficeWord2003.mspx?mfr=true

英文版 http://msdn.microsoft.com/zh-cn/magazine/cc164064(en-us).aspx#S1

如何用xmlspy将xml文档生成xsd文件? http://www.devdoc.org/index.php/archives/636

老蒋的博客 http://www.cnblogs.com/Mainz/archive/2007/12/16/996857.html

转载于:https://www.cnblogs.com/TivonStone/archive/2010/12/25/1916501.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值