XML基础(ExtensibleMarkup Language)
• 什么是XML,学它有什么用。优点:容易读懂;格式标准任何语言都内置了XML分析引擎,不用单独进行文件分析引擎的编写。
• XML语法规范:标签(Tag)、嵌套(Nest)、属性。标签要闭合,属性值要用""包围,标签可以互相嵌套
• XML树,父节点、子节点、兄弟节点(siblings)
• XML和HTML的区别:XML中元素必须关闭;XML中元素的属性值必须用引号; XML大小写敏感(CaseSensitive)
• 符合XML规范的HTML叫做“符合XHTML标准”。开发的网站必须通过W3C验
•
• Linq To XML:写
•
•
• 读写XML有很多技术,Dom、Sax等,还有高级的读写技术XmlSerializer、 Linq To XML(System.Xml.Linq)、 System.Xml(XMLDocument)等, XmlSerializer要求对每种不同的文件都定义一套类,很麻烦,而Linq To XML则不需要单独创建类,当然更底层一些,代码比XmlSerializer多,灵活性更高。System.Xml下的类是2.0及之前操作xml推荐的,现在很多人也仍然在用这个namespace下的类,这个namespace下的类和Linq To XML非常相似,因此不用单独学。
• 核心类XElement,一个XElement表示一个节点,new XElement("Order"),创建一个名字为Order的标签,调用Add增加子节点,也是XElement 对象,和TreeView一样。
• 想得到字符串怎么办?ToString
• 调用XElement的Save方法将xml内容保存在Writer中
Linq to xml
XElement代表一个节点
textReader 的子类是streamreader
xdoc.elements(“connectionstring”);只还回元素
xnode和xelement的关系
xdoc.descendants();后代必须是文档中唯一性
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.IO;
namespace 获取xml
{
class Program
{
static void Main(string[] args)
{
FileStreamstream = File.OpenRead(@" F:\传智播客\第二季\第二季\20110409\Sln0409\XML1\App.config");
StreamReaderreader = new StreamReader(stream);
XDocumentxdoc = XDocument.Load(reader);
varnode = xdoc.Root.Elements("connectionStrings");
foreach(XElement i innode)
{
foreach(XElement item ini.Elements("add"))
{
stringname= item.Attribute("name").Value;
stringcontr = item.Attribute("connectionString").Value;
Console.WriteLine("{0},{1}", name, contr);
}
}
//Console.WriteLine( xdoc.Root.Nodes().ElementAt(2).ToString());
reader.Dispose();
Console.ReadKey();
}
}
}
读取xML文件关键性的问题是分清楚节点和类继承之间的关系xelement是xnode的继承关系
自己写的xml和app.config的区别
DTD
DTD(DocumentType Definition) 是一套关于标记符的语法规则。它是XML1.0版规格的一部分,是XML文件的验证机制,属于XML文件组成的一部分。DTD 是一种保证XML文档格式正确的有效方法,可通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能成为数据交换标准,因为不同的公司只需定义好标准DTD,各公司都能依DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。DTD文件是一个ASCII文本文件,后缀名为.dtd。
Dta约束XML文件有哪些属性和元素