C#中将html转换为xml的实现
展开全部 我给你些我的建议吧HTML的语法格式比XML宽松多了,真正XML格式的网页是XHTML,也就是下一代HTML,他的格式和XML差不多,很严谨的。
如果你不想利用某些HTML和XML互转工具,自己编的话,有一定难度。
1.HTML的节点可以没末节点,你需要不停扫描,/,这三个符号以检查是否漏掉末节点,并补充。
2.HTML节点还可以不规则嵌套,你需要对已读入节点进行顺序存储,或用栈的数据结构来存储,并验证其层次正确性,最终正确顺序的节点,期间还得缓存节点值,或属性值。
3.HTML不同于XML,许多HTML节点有特殊的意义,许多HTML节点比如,都需要经过特殊处理才行。
在技术上,为保证性能,还要在一下方面有加强。
1.强大的字符串扫描,和解析器,此工作也巨大,但网上源码很多,建议到google英文里搜索,HTML parser,XML parser(解析器),有很多c#,java,c++的源代码可以利用,没有强大的解析器,跟本无法读懂文件。
2.System.Xml空间的详细运用,除了简单的XMLWriter,还必须学会XMLDocument,XmlNode,能够动态操控XML。
还有Xpath技术,操作XMl很有效率。
3.适当还会运用到正则表达式,来处理字符串匹配问题,尤其是节点的操作,即使是再好的字符串查找算法,有时也不如正则表达式,因此system.Text 中的Regex类要掌握好。
4.会控制WinForm中的WebBrower控件当然,即使你不打算自己做,或已找到了源代码,要想读懂,也必须要以上的知识。
至于工具,网上有,源码还哪找,有java的,但下载不下来。
这是著名的W3C(Html,xml等技术的创始组织)的转换工具,里面也有一些介绍,相信会有用的。
http://www.w3.org/People/Raggett/tidy/有一个用C#编的转换器,但付费后才可看到源代码http://www.chilkatsoft.com/downloads.asphttp://www.example-code.com/csharp/html2xml.asp还有一些软件,stylus的产品不错!http://www.stylusstudio.com/html_to_xml_importer.html
c# linq to xml遍历
C#题目一、选择填空题(每空2分,共60分)1.在对SQL Server 数据库操作时应选用()。
a)SQL Server .NET Framework 数据提供程序;b)OLE DB .NET Framework 数据提供程序;c)ODBC .NET Framework 数据提供程序;d)Oracle .NET Framework数据提供程序;答:这个题目是关于数据库提供程序的选择问题的,我想大多数人都知道的答案,是选择a2.下列选项中,()是引用类型。
a)enum类型b)struct类型c)string类型d)int类型答:值类型:struct类型,enum类型,int类型都是值类型,都存储在堆里,以我自己的理解就是可以写成类型变量=new 变量();的都是引用类型,string就是这样,故选A3.关于ASP.NET中的代码隐藏文件的描述正确的是()a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。
编程逻辑唯一与用户界面不同的文件中。
该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。
b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。
c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
d)以上都不正确。
答:隐藏文件指的就是那些aspx.cs和aspx.vb文件.项目中所有 Web 窗体页的代码隐藏类文件都被编译成项目动态链接库 (.dll) 文件 像这样的问题其实完全可以自己用google去找的.推荐用MSDN.下面的是MSDN上的解释: ASP.NET 代码隐藏文件使开发人员可以在 C# 或 Visual Basic .NET 类中编写控制它们的页的逻辑,这样可与 HTML 代码很清楚地分离开来。
开发人员可以使用面向对象编程的概念,如在 Web 层中的继承。
a:扩展名为.aspx.cs b:被编译成.dll c:正解4.以下描述错误的是()a)在C++中支持抽象类而在C#中不支持抽象类。
b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
答:a:很明显是错的5.C#的数据类型有()a)值类型和调用类型;b)值类型和引用类型;c)引用类型和关系类型;d)关系类型和调用类型;答:B为正解6.下列描述错误的是()a)类不可以多重继承而接口可以;b)抽象类自身可以定义成员而接口不可以;c)抽象类和接口都不能被实例化;d)一个类可以有多个基类和多个基接口;答:1.类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类 接口只是一个行为的规范或规定,微软的自定义接口总是后带able字段,证明其是表述一类类“我能做。
。
。
”抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中 2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;3.一个类一次可以实现若干个接口,但是只能扩展一个父类 4.接口可以用于支持回调,而继承并不具备这个特点.5.抽象类不能被密封。
6.抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非 虚的,当然您也可以声明为虚的。
7.(接口)与非抽象类类似,抽象类也必须为在该类的基类列表中列出的接口的所有成员提供它自己的实现。
但是,允许抽象类将接口方法映射到抽象方法上。
8抽象类实现了oop中的一个原则,把可变的与不可变的分离。
抽象类和接口就是定义为不可变的,而把可变的座位子类去实现。
9 好的接口定义应该是具有专一功能性的,而不是多功能的,否则造成接口污染。
如果一个类只是实现了这个接口的中一个功能,而不得不去实现接口中的其他方法,就叫接口污染。
10 尽量避免使用继承来实现组建功能,而是使用黑箱复用,即对象组合。
因为继承的层次增多,造成最直接的后果就是当你调用这个类群中某一类,就必须把他们全部加载到栈中!后果可想而知.11 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法 如果预计要创建组件的多个版本,则创建抽象类。
抽象类提供简单的方法来控制组件版本。
如果创建的功能将在大范围的全异对象间使用,则使用接口。
如果要设计小而简练的功能块,则使用接口。
如果要设计大的功能单元,则使用抽象类。
如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。
一个类可以有多个接口,但是不可以有多个基类,故D错 7.在DOM中,装载一个XML文档的方法()a)save方法b)load方法c)loadXML方法d)send方法答:自己没学过,不过看了网上的可能是选B中的load方法,c中如果是loadXml方法就好了 XML 信息从不同的格式读入内存。
读取源包括字符串、流、URL、文本读取器或 XmlReader 的派生类。
Load 方法将文档置入内存中并包含可用于从每个不同的格式中获取数据的重载方法。
还存在 LoadXml 方法,该方法从字符串中读取 XML。
8.下列关于构造函数的描述正确的是()a)构造函数可以声明返回类型。
b)构造函数不可以用private修饰c)构造函数必须与类名相同d)构造函数不能带参数答:C为正...
求Csharp编程代码
调用Console.WriteLine(GoldbachConjecture(6, 100, 5, "{0}={1}+{2};")); //哥德巴赫猜想 public static string GoldbachConjecture(int startNumber, int endNumber, int maxLength, string formatString) { StringBuilder result = new StringBuilder(); List primeNumbers = GetPrimeNumber(endNumber); //排除2的数字 primeNumbers.RemoveAt(0); //循环区间内的偶数 int index = 0; for (int i = Math.Max(6, startNumber); i { //输出拆分后的结果 foreach (int primeNumber in primeNumbers) { //两数相加超出范围时退出循环 //if ((i - primeNumber) // break; //判断当前的偶数减去一个质数后,另一个值是否在质数列表中 if (!primeNumbers.Contains(i - primeNumber)) continue; //输出指定格式 result.AppendFormat(formatString, i, primeNumber, i - primeNumber); //只输出一次。
如果要把所有可能都输出的话,请取消循环内第一行注释并注释下面这行。
break; } //每行输出 maxLength 个 if (++index % maxLength == 0) { result.AppendLine(); } } return result.ToString(); } //获取所有小于 endNumber的素数(质数) public static List GetPrimeNumber(int endNumber) { List primeNumbers = new List(); primeNumbers.Add(2); for (int i = 3; i { bool isPrimeNumber = true; //判断当前值之前的质数判断能否整除 foreach (int primeNumber in primeNumbers) { //能整除则不是质数 if (i % primeNumber == 0) { isPrimeNumber = false; break; } //平方根判断,减少运算次数 if (primeNumber > Math.Sqrt(i)) { break; } } //如果是质数 if (isPrimeNumber) { primeNumbers.Add(i); } } return primeNumbers; }
C C++ C#都有什么关系 怎么区别
C是面向过程的高级语言,也就是说,每一个功能的实现,都是通过函数之间的调用完成的。
在C中需要自己实际的动手管理内存。
而且是面向过程的,解决问题的时候,需要先考虑算法,最后考虑数据。
C语言用的范围至今还是比较广泛,主要用来解决一些底层的实现,同时因为其高运行速度和基本于运行平台无关的特性,所以还是一门很好的语言。
C语言的版本和种类很多,这要看你具体需要学习的是哪一些,但是根本内容没有发生改变。
C++/C#C++是在C的基础引入了对象的概念,也就是说,在解决问题的时候,我们使用的是OOP的模式进行编程。
使用C++完成的程序,使用C语言同样可以完成。
C#和Java类似,是面向对象的高级程序设计语言。
只要您学会了C那么C++应该不是问题,学会了C++那么C#应该不是问题。
但是三门语言没有先后的顺序,关键是看你能不能坚持。
最后,希望回答对你有所帮助,有兴趣可以加564777005很高兴认识你~
C与C#的区别在什么地方?越具体越好!谢谢!!!
c:面向过程,语法太麻烦,但对硬件的底层编程和对内存的管理的灵活性方面c是其他高级语言所不可及的。
c#:纯面向对象的(跟java很像如果你对java了解估计你就会明白c&c#之间的区别了),是ms .net framework的主力之一,它的代码运行是安全的,里面没有指针和引用,像java一样有垃圾回收机制。
语法基本没有区别,个人感觉首先c#不必对指针进行太多的研究,然后可遗址性等,其它的区别相当大。
可以说不是一个方向的。
开发环境跟开发语言也是两个不同的概念 学习c#并不必须有c语言的基础,不过,如果你学过c语言,那会事半功倍的,因为他们之间有很多语法是一样的。
作为初学者,并没有必要先去学习c语言,你只需要有c#的完整的教程就行了。
举个简单的例子,你想学开高档的轿车并不需要先去学习开低档的面包车。
但如果你已经会开面包车的话,那么学开轿车就一定会容易一些了,因为他们有很多相同的地方。
C语言: C语言是国际上广泛流行的、很有发展前途的计算机高级语言。
它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。
早期的操作系统等系统软件主要是用汇编语言编写的(包括 UNIX操作系统在内)。
由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。
为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作),例如:对内存地址的操作、位操作等)。
人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。
于是,C语言就在这种情况下应运而生了。
C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60。
1960年出现的ALGOL 60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。
1963年英国的剑桥大学推出了CPL(CombinedProgram- ming Language)语言。
CPL语言在ALGOL 60的基础上接近了硬件一些,但规模比较大,难以实现。
1967年英国剑桥大学的Matin Richards对 CPL语言作了简化,推出了BCPL(Basic Combined Programming Language)语言。
1970年美国贝尔实验室的 Ken Thompson以 BCPL语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的 B语言( 取 BCPL的第一个字母),并用 B语言写第一个UNIX操作系统,在PDP-7上实现。
1971年在PDP-11/20上实现了B语言,并写了UNIX操作系统。
但B语言过于简单,功能有限。
1972年至 1973年间,贝尔实验室的 D.M.Ritchie在B语言的基础上设计出了C语言(取 BCPL的第二个字母)。
C语言既保持了BCPL和B语言的优点(精练、接近硬件),又克服了它们的缺点(过于简单、数据无类型等)。
最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的。
1973年,K.Thom- pson和D.M.ritchie两人合作把UNIX的90%以上用 C改写(UNIX第5版。
原来的 UNIX操作系统是1969年由美国的贝尔实验室的 K.Thompson和D.M.Ritchie开发成功的,是用汇编语言写的)。
后来,C语言多次作了改进,但主要还是在贝尔实验室内部使用。
直到1- 975年UNIX第6版公布后 ,C语言的突出优点才引起人们普遍注意。
1977年出现了不依赖于具体机器的C语言编译文本《可移植C语言编译程序》,使C移植到其它机器时所做的工作大大简化了,这也推动了UNIX操作系统迅速地在各种机器上实现。
例如,VAX,AT&T等计算机系统都相继开发了UNIX。
随着 UNIX的日益广泛使用,C语言也迅速得到推广。
C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成。
1978年以后,C语言已先后移植到大、中、小、微型机上,已独立于UNIX和PDP了。
现在C语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一。
以1978年发表的UNIX第7版中的C编译程序为基础,Brian W.Kernighan和 Dennis M.Ritchie(合称K&R)合著了影响深远了名著《The C Programming Lan- guage》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它被称为标准C。
1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充 ,制定了新的标准,称为ANSI C。
ANSI C比原来的标准C有了很大的发展。
K&R在1988年修改了他们的经典著作《The C Progra- mming Language》 ,按照ANSI C的标准重新写了该书。
1987年,ANSI C又公布了新标准--87 ANSI C 。
目前流行的C编译系统都是以它为基础的。
C#: C#是Microsoft公司设计的一种编程语言。
它松散地基于C/C++,并且有很多方面和Java类似。
Microsoft是这样描述C#的:“C#是从C和C++派生来的一种简单、现代、面向对象和类型安全的编程语言。
C#(读做'Csharp')主要是从C/C++编程语言家族移植过来的,C和C++的程序员会马上熟悉它。
C#试图结合Visual Basic的快速开发能力和C++的强大灵活的能力。
” 附: 一个简单的C#程序是怎样的? 可以是这样: class CApplication { public static void Main() { System.Console.Write( “Hello, new .NET world!” ); }} (你不能将Main()...
Csharp(C#),我已经做好窗口类程序,然后保存的文件是CS。
我想...
展开全部 在解决方案里面,鼠标右键项目==》在资源管理器里面打开,然后一次打开,bin==>debug==>把里面的全部打包,执行的文件就是 项目名.exe不过需要提醒的是:正常的项目发布都不是这样的,如果你这么操作,适用方的电脑必须安装了系统版本或者更高版本的类库。
...
为什么会找不到Microsoft.CSharp.dll
打开"开始-运行-输入regsvr32 Microsoft.CSharp.dll",回车即可解决。
希望脚本之家为您提供的Microsoft.CSharp.dll对您有所帮助。
通过脚本之家下载dll的朋友,可将下面的代码保存为“注册.bat“,放到dll文件同级目录(只要在同一个文件夹里面有这两个文件即可),双击注册.bat,就会自动完成Microsoft.CSharp.dll注册(win98不支持)。
c#如何把word文档转成html
日常生活中,我们总是在Word中进行文字的编辑,它不仅能够保存Text文本,还可以保存文本的格式等等。
那么如果我要将一Word文档上的内容展示在网页上,该怎么做呢?这里我提供了一个小工具,你可以将Word转换为Html,需要显示的话,可以直接访问该Html,废话不多说,下面看代码。
页面代码:[html] view plaincopy C#代码:[csharp] view plaincopyusing System; using System.Data; using System.Configuration; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; protected void Page_Load(object sender, EventArgs e) { } /// /// 将word转换为Html /// /// /// protected void btnConvert_Click(object sender, EventArgs e) { try { //上传 //uploadWord(File1); //转换 wordToHtml(File1); } catch (Exception ex) { throw ex; } finally { Response.Write("恭喜,转换成功!"); } } //上传文件并转换为html wordToHtml(wordFilePath) /// ///上传文件并转存为html /// ///word文档在客户机的位置 ///上传的html文件的地址 public string wordToHtml(System.Web.UI.HtmlControls.HtmlInputFile wordFilePath) { Microsoft.Office.Interop.Word.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass(); Type wordType = word.GetType(); Microsoft.Office.Interop.Word.Documents docs = word.Documents; // 打开文件 Type docsType = docs.GetType(); //应当先把文件上传至服务器然后再解析文件为html string filePath = uploadWord(wordFilePath); //判断是否上传文件成功 if (filePath == "0") return "0"; //判断是否为word文件 if (filePath == "1") return "1"; object fileName = filePath; Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { fileName, true, true }); // 转换格式,另存为html Type docType = doc.GetType(); string filename = System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString(); // 判断指定目录下是否存在文件夹,如果不存在,则创建 if (!Directory.Exists(Server.MapPath("~\\html"))) { // 创建up文件夹 Directory.CreateDirectory(Server.MapPath("~\\html")); } //被转换的html文档保存的位置 string ConfigPath = HttpContext.Current.Server.MapPath("html/" + filename + ".html"); object saveFileName = ConfigPath; /*下面是Microsoft Word 9 Object Library的写法,如果是10,可能写成: * docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, * null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML}); * 其它格式: * wdFormatHTML * wdFormatDocument * wdFormatDOSText * wdFormatDOSTextLineBreaks * wdFormatEncodedText * wdFormatRTF * wdFormatTemplate * wdFormatText * wdFormatTextLineBreaks * wdFormatUnicodeText */ docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML }); //关闭文档 docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { null, null, null }); // 退出 Word wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); //转到新生成的页面 return ("/" + filename + ".html"); } public string uploadWord(System.Web.UI.HtmlControls.HtmlInputFile uploadFiles) { if (uploadFiles.PostedFile != null) { string fileName = uploadFiles.PostedFile.FileName; int extendNameIndex = fileName.LastIndexOf("."); string extendName = fileName.Substring(extendNameIndex); string newName = ""; try { //验证是否为word格式 if (extendName == ".doc" || extendName == ".docx") { DateTime now = DateTime.Now; newName = now.DayOfYear.ToString() + uploadFiles.PostedFile.ContentLength.ToString(); // 判断指定目录下是否存在文件夹,如果不存在,则创建 if (!Directory.Exists(Server.MapPath("~\\wordTmp"))) { // 创建up文件夹 Directory.CreateDirectory(Server.MapPath("~\\wordTmp")); } //上传路径 指当前上传页面的同一级的目录下面的wordTmp路径 uploadFiles.PostedFile.SaveAs(System.Web.HttpContext.Current.Server.MapPath("wordTmp/"...
转载请注明出处51数据库 » csharpxml软件
青涩不清纯