xml解析

XmlReader/XmlWriter 类

一曲冷凌霜 提交于 2020-02-27 07:02:06
  XmlReader用于读取Xml文件,XmlWriter用于将数据写到Xml文件。其实,在印象当中,XML很多的操作类都支持直接Save、Read也支持接受XmlReader与XmlWriter类的示例作为参数,但是为什么还要有这个两类来专门用于读写XML文件呢?因为它们有强大的自定义格式功能; 一、XmlReader的使用   XmlReader类专门用于读取Xml文件,最大的特点在于支持 Settings。 属性 说明 AttributeCount 当在派生类中被重写时,获取当前节点上的属性数 BaseURI 当在派生类中被重写时,获取当前节点的基 URI CanReadBinaryContent 获取一个值,该值指示 XmlReader 是否实现二进制内容读取方法 Depth 获取 XML 文档中当前节点的深度 EOF 获取一个值,该值指示此读取器是否定位在流的结尾 HasAttributes 获取一个值,该值指示当前节点是否有任何属性 HasValue 获取一个值,该值指示当前节点是否可以具有 Value IsDefault 获取一个值,该值指示当前节点是否是从 DTD 或架构中定义的默认值生成的特性 IsEmptyElement 获取一个值,该值指示当前节点是否为空元素(例如 <MyElement/>) Item 获取具有指定索引的属性的值,支持整形,字符串

XML可扩展标记语言

青春壹個敷衍的年華 提交于 2020-02-26 22:28:36
XML可扩展标记语言 XML概述 XML称为可扩展标记性语言,是eXtensible Markup Language的缩写。在.NET框架中XML是非常重要的一部分。它用于描述数据,是当前处理结构化文档信息的有力工具。XML与操作系统、编程语言的开发平台无关,可以实现不同系统之间的数据交互。 XML技术应用广泛,最基本的如网站、应用程序的配置信息一般都采用XML文件描述。再如Web服务使用XML定义应用程序之间传输数据的标准格式。 XML的声明 XML同HTML语言一样都是标记语言,都有着标记。但HTML是用来展示和美化数据的,而XML主要用来保存和传输数据。 <?xml version="1.0" encoding="UTF-8"?> < Enginner > < ID > 001 </ ID > < Name > 周杰伦 </ Name > < Age > 23 </ Age > </ Enginner > 提示: <?xml version=“1.0” encoding=“UTF-8”?>是XML声明,它一般是XML文档的第一行。XML声明由以下两部分组成: version:文档符合XML1.0规范。 encoding:文档字符编码,默认为“UTF-8”。 XML的特点 XML中每对标记通常被称为节点,它们成对出现而且必须成对出现,用来描述这个节点存储的内容。

可扩展标记语言

让人想犯罪 __ 提交于 2020-02-26 14:37:37
一、什么是XML XML是可扩展标记语言,类似HTML,用来传输和存储数据。标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。 1. XML语法 XML是树形结构,且一定要有跟部标签。 语法规则: a. 所有的 XML标签必须有关闭标签 b. XML分大小写,且是自定义标签 c. XML必须正确嵌套 d. XML的属性须加引号 2.命名规则 标签命名规则: a.可以含有字母,数字及其他字符 b.不以数字或者标点符号开头 c.不以“XML”开头 d.不能有空格 二.解析XML文件 //new一个XmlDocument对象 XmlDocument xmlDoc=new XmlDocument(); //读取xml文件 xmlDoc.Load("文件路径"); //读取根节点(在这里有两种方式来接收) XmlNode/XmlElement en=xmlDoc.DocumentElement; //读取子节点 //使用foreach循环对子节点进行循环,然后依次显示 foreach(XmlNode node in en.ChildNodes) { Console.WriteLine(node["channelType"].InnerText); }

UPnP与Win XP 缺陷之完全解析 ZT

混江龙づ霸主 提交于 2020-02-25 12:38:32
统一即插即用英文是Universal Plug and Play,缩写为UPnP。要说计算机外设的即插即用(Plug and Play(缩写PnP)),大家可能很熟悉,但对统一即插即用,多数人会感到是一头雾水。由于windows xp加入对UPnP的支持,并且被查出存在很严重的安全问题,所以,一时间,使得UPnP名声大噪。巧的是,本人原来查阅过关于UPnP的技术白皮书,而且也较为详细地看了关于此次发现的安全缺陷的介绍。因此,趁着这个机会,将UPnP以及引起安全缺陷的详情披露出来。 一、 UPnP是用来干什么的?   网络发展到现在,已经可以使我们在网上冲浪、收发邮件、听到远方传送来的声音、搜索感兴趣的内容、下载软件、点播节目、即时聊天等等、等等……实现的功能好像已经不少,但,人的欲望无止境,享福人还想更享福,还有许多目标没有达到:例如,怎样才能使我们在网络上,像平时用遥控器那样,操作空调器、电风扇、厨房电器,或网络远端的电器设备呢?如何利用网络上的计算机资源,使这种“遥控”更具智能化?甚至,将一系列相关的控制写到一个脚本中,以便用户定制自己所喜爱的控制流程?……等等。实现诸如此类的效果,将是有巨大需求的应用技术。如果实现通过网络用UPnP控制家用设备,将给我们的生活带来很大的方便和很多新的体验。例如:   1.你在下班之前,或在回去的路上,就可以先打开家里的空调器和厨房设备

XXE与XXE-Lab

廉价感情. 提交于 2020-02-24 23:20:59
简介 1. XXE Injection(XML External Entity Injection)XML外部实体注入 服务端接收和解析了来自用户端的XML数据,而又没有做严格的安全控制,从而导致XML外部实体注入。 2. XML(Extensible Markup Language)可扩展标记语言 XML用来传输和存储数据; XML的标签没有预定义,需要自行定义标签; XML文档结构包括:XML声明、DTD文档、文档元素。 3. XML声明 <?xml version="1.0" encoding="utf-8" standalone="yes" ?> version=“1.0”:此XML文档按照1.0版本的XML规则进行解析; encoding=“utf-8”:此XML文档采用utf-8的编码格式; standalone=“yes”:此XML文档是独立的,不能引用外部的DTD文档,若此属性为no,表示此XML不是独立的,能够引用外部的DTD文档,此属性默认值为yes。 4. DTD(Document Type Definition) 文档类型定义 定义XML文档的合法构建模块; DTD声明 内部声明DTD: <!DOCTYPE 根元素 [元素声明]> 引用外部DTD: <!DOCTYPE 根元素 SYSTEM "文件名"> 或 <!DOCTYPE 根元素 PUBLIC

XXE漏洞学习笔记+靶场实战

流过昼夜 提交于 2020-02-23 15:28:45
XXE漏洞学习笔记+靶场实战 一、关于XML和XXE的基础知识 ​ XXE全称XML,也就是XML外部实体注入攻击,是对非安全的外部实体数据进行处理时引发的安全问题。要想搞懂XXE,一定要先了解XML语法规则和外部实体的定义及调用形式。 XML基础知识 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。XML语法规则: 1.所有的XML元素都必须有一个关闭标签; 2.XML标签对大小写敏感。 3.XML必须正确嵌套。 4.XML属性值必须加“”。 XML被设计为传输和存储数据,其焦点是数据的内容。 HTML被设计用来显示数据,其焦点是数据的外观。 XML基本文档结构 <!--XML声明--> <?xml version="1.0" encoding="UTF-8"?> <!--DTD,这部分可选的--> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///c:/windows/win.ini" > ]> <!--文档元素--> < foo > &xxe; </ foo > xml元素介绍 XML元素是指从开始标签直到结束标签的部分。每个元素又有对应的属性

C# 对XML基本操作总结

╄→гoц情女王★ 提交于 2020-02-23 15:14:57
C# 对XML基本操作包括读取节点的数据,添加节点。读取节点属性,修改节点属性等。具体如下: XML文件:文件在MyDocument文件夹下 <?xml version="1.0" encoding="utf-8"?> <PersonF xmlns="" Name="(test)work hard work smart!"> <person Name="Person1"> <ID>1</ID> <Name>XiaoA</Name> <Age>59</Age> </person> <person Name="Person2"> <ID>2</ID> <Name>XiaoB</Name> <Age>29</Age> </person> <person Name="Person3"> <ID>3</ID> <Name>XiaoC</Name> <Age>103</Age> </person> <person Name="Person4"> <ID>4</ID> <Name>XiaoD</Name> <Age>59</Age> </person> </PersonF>    Code:说明都在注释里。 public void TestXML() { XmlDocument doc = new XmlDocument(); string path = "http://www.cnblogs

DOM解析XML

拥有回忆 提交于 2020-02-23 11:55:27
一、DOM方式的解析原理 DOM模式解析XML,是把整个XML文档当成一个对象来处理,会先把整个文档读入到内存里。是基于树的结构,通常需要加载整文档和构造DOM树,然后才能开始工作。 二、优缺点及适用情况 优点:a、由于整棵树在内存中,因此可以对xml文档随机访问b、可以对xml文档进行修改操作c、较sax,dom使用也更简单。 缺点:a、整个文档必须一次性解析完a、由于整个文档都需要载入内存,对于大文档成本高 三、注意的问题 你 四、其他 我 五、程序源代码和XML源文档 1、源代码 1 import java.io.File; 2 import java.io.IOException; 3 4 import javax.xml.parsers.DocumentBuilder; 5 import javax.xml.parsers.DocumentBuilderFactory; 6 import javax.xml.parsers.ParserConfigurationException; 7 8 import org.w3c.dom.Document; 9 import org.w3c.dom.Element; 10 import org.w3c.dom.NamedNodeMap; 11 import org.w3c.dom.Node; 12 import org.w3c

Scala解析XML

血红的双手。 提交于 2020-02-22 19:29:11
使用Scala解析XML. 首先先把XML文件读入到内存里: val someXml = XML.loadFile("file/Example.xml") 这样someXml是一个scala.xml.Elem对象。 Scala XML API提供了类似XPath的语法来解析XML。在NodeSeq这类父类里,定义了两个很重要的操作符("\"和"\\"),用来获得解析XML: \ :Projection function, which returns elements of this sequence based on the string that--简单来说,\ 根据条件搜索下一子节点 \\:Projection function, which returns elements of this sequence and of all its subsequences, based on the string that--而 \\ 则是根据条件搜索所有的子节点 先上一个XML的文件作为例子: <fix major="4" minor="2"> <header> <field name="BeginString" required="Y">FIX4.2</field> <field name="MsgType" required="Y">Test</field> </header>

模块和包

只谈情不闲聊 提交于 2020-02-22 05:17:06
1. 模块和包 容器: 列表、元组、字符串、字典等,对数据的封装 函数: 对语句的封装 类: 对方法和属性的封装,即对函数和数据的封装 而模块(module)就是个程序,一个 .py 文件,模块分为三类: Python 标准库: 如 time、random 等 第三方模块: 如 requests、beautiful 等 应用程序自定义模块: 用户自定义模块 随机程序代码越写越多,每个文件里面的代码越来越长,越来越不容易维护。使用模块的好处: 模块化代码: 将不同功能的代码归类,提高代码的可维护性 避免重复造轮子: 编写代码可以不必从零开始,可以引用别人已经写好的模块,Python 有很多优秀的第三方模块 命名空间: 每个模块单独维护一个命名空间,不同模块相同函数名、变量名不会有冲突 Tips: 自定义模块的时候,不要与内置的模块名有冲突,不然会影响内置模块 1.1 包 为了避免不同的人编写的模块名相同,Python 引入了按目录来组织模块的方法 —— 包(Package) 不同包下的模块,名字相同不会有冲突,只要顶层的包名不冲突就行。 如何创建一个包: 创建一个文件夹,里面存放相应模块文件,文件夹名字即为包名 在文件夹中创建一个 __init__.py 文件,可以为空 1.2 导入模块 导入模块的几种常用方法: >>> import 模块1, 模块2... # sys.path