搜索
首页Javajava教程在.NET Framework中轻松处理XML数据(4-1)

在.NET Framework中轻松处理XML数据(4-1)

Dec 20, 2016 pm 02:12 PM
.netxml数据

??XmlTextWriter类 

??用在本节中的方法创立XML文档显然并不艰苦。多年以来,开发者都是通过在缓存在连接一些字符串,连接好以后再把缓存中字符串输出到文件的方法来创立XML文档。但是以这种方法创立XML文档的方法只有在你保证字符串中不存在任何渺小的错误的时候才有效。.NET Framework通过用XMLwriter供给了更好的创立XML文档的方法。 

??XML Writer类以只前(forward-only)的方法输出XML数据到流或者文件中。更重要的是,XML Writer在设计时就保证所有的XML数据都符合W3C XML 1.0推荐规范,你甚至不用担心忘记写闭标签,由于XML Writer会帮你写。XmlWriter是所有 XML writer的抽象基类。.NET Framework只供给唯一的一个writer 类----XmlTextWriter类。 

??我们先来看看XML writers和旧的writers的不同点,下面的代码保留了一个string型的数组: 

StringBuilder sb = new StringBuilder(''); 

sb.Append(''); 

foreach(string s in theArray) { 

sb.Append('sb.Append(s);

sb.Append('\'/>'); 



sb.Append(''); 

??代码通过循环取出数据中的元素,写好标签文本并把它们累加到一个string中。代码保证输出的内容是格局良好的并且留心了新行的缩进,及支撑命名空间。当创立的文档结构比拟简略时,这种方法可能不会有错误。然而,当你要支撑处理指令,命名空间,缩进,格局化以及实体的时候,代码的数目就成指数级增加,出错的可能性也随之增加。 

??XML writer写方法功效对应每个可能的XML节点类型,它使创立xml文档的过程更符合逻辑、更少的信任于繁琐的标记语言。图六演示了怎么样用XmlTextWriter类的方法来连接一个string数据。代码很简洁,用XML writer的代码更轻易读、结构更好。 

Figure 6 Serializing a String Array 

void CreateXmlFileUsingWriters(String[] theArray, string filename) 



// Open the XML writer (用默认的字符集) 

XmlTextWriter xmlw = new XmlTextWriter(filename, null); 

xmlw.Formatting = Formatting.Indented; 



xmlw.WriteStartDocument(); 

xmlw.WriteStartElement('array'); 

foreach(string s in theArray) 



xmlw.WriteStartElement('element'); 

xmlw.WriteAttributeString('value', s); 

xmlw.WriteEndElement(); 



xmlw.WriteEndDocument(); 



// Close the writer 

xmlw.Close(); 



??然而XML writer并不是魔术师----它不能修复输进的错误。XML writer不会检查元素名和属性名是否有效,也不保证被用的任何的Unicode字符集合适当前架构的编码集。如上所述,为了避免输出错误,必需要杜尽非XML字符。但是writer没有供给这种方法。 

??另外,当创立一个属性节点时,Writer不会检验属性节点的名称是否与已存在的元素节点的名称雷同。最后,XmlWriter类不是一个带验证的Writer类,也不保证输出是否符合schema或者DTD。在.NET Framework中带验证的writer类目前来说还没有供给。但是在我写的《Applied XML Programming for Microsoft .NET (Microsoft Press®, 2002)》书中,我自己写了一个带验证的Writer组件。你可以到下面的网址往下载源码:http://www.microsoft.com/MSPress/books/6235.asp. 

??图七列出了XML writer的一些状态值(state)。这些值都源于WriteState枚举类。当你创立一个Writer,它的初始状态为Start,表现你将要配置该对象,实际上writer没有开端。下一个状态是Prolog,该状态是当你调用WriteStartDocument方法开端工作的时候设置的。然后,状态的转换就取决于你的写的文档及文档的内容了。Prolog状态一直保留到当你增加一个非元素节点时,例如注释元素,处理指令及文档类型。当第一个节点也就是根节点写完后,状态就变为Element。当你调用WriterStartAtribute方法时状态转换为Attribute,而不是当你调用WriteAtributeString方法写属性时转换为该状态。假如那样的话,状态应当是Element。当你写一个闭标签(>)时,状态会转换成Content。当你写完文档后,调用WriteEndDocument方法,状态就会返回为Start,直到你开端写另一个文档或者把Writer关掉。 


 以上就是在.NET Framework中轻松处理XML数据(4-1) 的内容,更多相关内容请关注PHP中文网(www.php.cn)! 


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
JVM如何处理操作系统API的差异?JVM如何处理操作系统API的差异?Apr 27, 2025 am 12:18 AM

JVM通过JavaNativeInterface(JNI)和Java标准库处理操作系统API差异:1.JNI允许Java代码调用本地代码,直接与操作系统API交互。2.Java标准库提供统一API,内部映射到不同操作系统API,确保代码跨平台运行。

Java 9影响平台独立性中引入的模块化如何?Java 9影响平台独立性中引入的模块化如何?Apr 27, 2025 am 12:15 AM

modularitydoesnotdirectlyaffectJava'splatformindependence.Java'splatformindependenceismaintainedbytheJVM,butmodularityinfluencesapplicationstructureandmanagement,indirectlyimpactingplatformindependence.1)Deploymentanddistributionbecomemoreefficientwi

什么是字节码,它与Java的平台独立性有何关系?什么是字节码,它与Java的平台独立性有何关系?Apr 27, 2025 am 12:06 AM

BytecodeinJavaistheintermediaterepresentationthatenablesplatformindependence.1)Javacodeiscompiledintobytecodestoredin.classfiles.2)TheJVMinterpretsorcompilesthisbytecodeintomachinecodeatruntime,allowingthesamebytecodetorunonanydevicewithaJVM,thusfulf

为什么Java被认为是一种独立于平台的语言?为什么Java被认为是一种独立于平台的语言?Apr 27, 2025 am 12:03 AM

javaachievesplatformIndependencEthroughThoJavavIrtualMachine(JVM),wodecutesbytecodeonyanydenanydevicewithajvm.1)javacodeiscompiledintobytecode.2)

图形用户界面(GUIS)如何提出Java平台独立性的挑战?图形用户界面(GUIS)如何提出Java平台独立性的挑战?Apr 27, 2025 am 12:02 AM

JavaGUI开发中的平台独立性面临挑战,但可以通过使用Swing、JavaFX,统一外观,性能优化,第三方库和跨平台测试来应对。JavaGUI开发依赖于AWT和Swing,Swing旨在提供跨平台一致性,但实际效果因操作系统不同而异。解决方案包括:1)使用Swing和JavaFX作为GUI工具包;2)通过UIManager.setLookAndFeel()统一外观;3)优化性能以适应不同平台;4)使用如ApachePivot或SWT的第三方库;5)进行跨平台测试以确保一致性。

Java开发的哪些方面取决于平台?Java开发的哪些方面取决于平台?Apr 26, 2025 am 12:19 AM

JavadevelovermentIrelyPlatForm-DeTueTososeVeralFactors.1)JVMVariationsAffectPerformanceNandBehaviorAcroSsdifferentos.2)Nativelibrariesviajnijniiniininiinniinindrododerplatefform.3)

在不同平台上运行Java代码时是否存在性能差异?为什么?在不同平台上运行Java代码时是否存在性能差异?为什么?Apr 26, 2025 am 12:15 AM

Java代码在不同平台上运行时会有性能差异。1)JVM的实现和优化策略不同,如OracleJDK和OpenJDK。2)操作系统的特性,如内存管理和线程调度,也会影响性能。3)可以通过选择合适的JVM、调整JVM参数和代码优化来提升性能。

Java平台独立性有什么局限性?Java平台独立性有什么局限性?Apr 26, 2025 am 12:10 AM

Java'splatFormentenceHaslimitations不包括PerformanceOverhead,versionCompatibilityIsissues,挑战WithnativelibraryIntegration,Platform-SpecificFeatures,andjvminstallation/jvminstallation/jvmintenance/jeartenance.therefactorscomplicatorscomplicatethe“ writeOnce”

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能