基于XML的Word文档格式智能识别
2010-12-25 05:31
330 查看
平安夜《微机接口》考试结束,马上开始干活。
目标
研究论文格式智能检查系统,开发在线论文管理网站,提供给指导老师、学生之间进行论文管理、指导、互动的一个平台,代替人工管理,更高效的完成任务。功能模块
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=true2.部分代码
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
老蒋的博客 /content/3614980.html
相关文章推荐
- [转]how to programatically access built-in properties of open xml word doc(如何读取open xml格式文档属性)
- Java Web项目中利用FreeMarker模板生成的word文档,其它格式文档同理,如pdf,txt,java,xml等等
- Java Web项目中利用FreeMarker模板生成的word文档,其它格式文档同理,如pdf,txt,java,xml等等
- Java利用freemaker和(excelXML表格或wordXML表格),导出自己任何想要格式的文档
- 自己做的基于XML数据的JS(json格式)智能提示
- wordxml文档格式说明
- 基于springboot的freemarker创建指定格式的word文档
- 处理 OpenOffice.org 基于 XML 的文档格式
- 怎样将图片格式的PDF文档变成word 文字识别
- 用C#将XML中的文字数据写如WORD文档,并控制其格式(包括字体的样式和字体大小)
- 用C#将XML中的文字数据写如WORD文档,并控制其格式(包括字体的样式和字体大小)
- 用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换
- 自定义格式的XML文档适配器V1.1
- Xerces-C++更新XML文档的空行格式问题
- lucene 索引非txt文档 (pdf word rtf html xml)
- 掌握XML系列(三)---创建格式良好的饿XML文档 续编
- C#操作Word总结(二)——设置文档格式并添加文本内容、超链接、添加图片
- OpenXml SDK 2.0 创建Word 2010文档(不带[Compatibility])最简代码
- FckEditor中从word文档粘贴过来的内容在点击确定清除格式后直接清除而不是再弹出从MS WORD粘贴对话框
- AS3.0 加载XML#1088 文档中根元素后面的标记格式必须正确,问题解决方法