��.NET Framework�����ɴ���XML����(��)
[����]����֤���Ķ��� XmlValidatingReader��ʵ����XmlReader�࣬���ṩ��֧�ֶ������͵�XML��֤��DTD��XML-Data Reduced(XDR)�ܹ����Լ�XSD��DTD��XSD����W3C�ٷ��Ƽ��ġ���XDR��Microsoft�������ڴ���XML���ܵ�һ�ָ�ʽ��...
����֤���Ķ���
XmlValidatingReader��ʵ����XmlReader�࣬���ṩ��֧�ֶ������͵�XML��֤��DTD��XML-Data Reduced(XDR)�ܹ����Լ�XSD��DTD��XSD����W3C�ٷ��Ƽ��ġ���XDR��Microsoft�������ڴ���XML���ܵ�һ�ָ�ʽ��
��������XmlVlidatingReader��ȥ��֤XML�ĵ���XMLƬ�ϡ�XmlValidatingReader�����XML�Ķ�������---��һ�����͵�XMLTextReader��ʵ����XMLTextReade���ڶ�ȡ�ĵ��Ľڵ㣬����XmlVlidatingReader������Ҫ����֤����ȥ��֤ÿһ��XML�顣
XmlVlidatingReader��ֻʵ���˷dz�С��XML�Ķ����ر���һ�������Ӽ����������ǹ�����һ���Ѵ��ڵ�XML�Ķ������棬�����ӷ��������ԡ����������������Ĺ��캯�������ᷢ���������Ե�����һ���Ѵ��ڵ��ı��Ķ���������֤��XML�Ķ�������ֱ�ӵĴ�һ���ļ���һ��URL���л��������Ĺ��캯���б����£�
public XmlValidatingReader(XmlReader);
public XmlValidatingReader(Stream, XmlNodeType, XmlParserContext);
public XmlValidatingReader(string, XmlNodeType, XmlParserContext);
����֤��XML�Ķ����ܷ����κε�XMLƬ�ϣ�XMLƬ��ͨ��һ��string����һ��stream�ṩ,Ҳ���Է����κ��Ķ����ṩ��XML�ĵ���
XmlVlidatingReader�������ش��ı��ķ����dz���(��������reader����˵)�������� Read������Skip��ReadTypedValue������Skip����������ǰ�ڵ����е��ӽڵ㣨�㲻������������ʽ��XML�ı��������൱���õ��㷨����Skip����Ҳ��֤�����������ݡ�ReadTypedValue��������ָ�� XML �ܹ� (XSD) ���Ͷ�Ӧ��CLR���͡������÷����ҵ���XSD���Ͷ�Ӧ��CLR���ͣ���CLR���������������Ҳ��������Ѹýڵ���ֵ��Ϊһ���ַ���ֵ���ء�
����֤��XML�Ķ�����������������һ�����ڽڵ����Ķ���������֤��ǰ�ڵ��Ľṹ�Ƿ����ϵ�ǰ��schema����֤������ʽ�ģ���û�з������ر�ʾ�ĵ��Ƿ���Ч�IJ���ֵ��ͨ���㶼����Read����ȥ��������XML�ĵ���ʵ���ϣ���Ҳ�����ô���֤���Ķ���ȥ��XML�ĵ�����ÿһ���У���ǰ�����ʵĽڵ��Ľṹ�Ƿ���ָ����schema���ϣ����������ϣ��׳�һ���쳣��ͼ����һ������̨Ӧ�ó���������һ��Ҫ�����ļ����������У�����������֤������
Figure 4 Console App
using System;
using System.Xml;
using System.Xml.Schema;
class MyXmlValidApp
{
public MyXmlValidApp(String fileName)
{
try {
Validate(fileName);
}
catch (Exception e) {
Console.WriteLine("Error: {0}", e.Message);
Console.WriteLine("Exception raised: {0}",
e.GetType().ToString());
}
}
private void Validate(String fileName)
{
XmlTextReader xtr = new XmlTextReader(fileName);
XmlValidatingReader vreader = new XmlValidatingReader(xtr);
vreader.ValidationType = ValidationType.Auto;
vreader.ValidationEventHandler += new
ValidationEventHandler(this.ValidationEventHandle);
vreader.Read();
vreader.MoveToContent();
while (vreader.Read()) {}
xtr.Close();
vreader.Close();
}
public void ValidationEventHandle(Object sender,
ValidationEventArgs args)
{
Console.Write("Validation error: " + args.Message + " ");
}
public static void Main(String[] args)
{
MyXmlValidApp o = new MyXmlValidApp(args[0]);
return;
}
}
ValidationType����������֤�����ͣ���������:DTD, XSD, XDR����none������û��ָ����֤�����ͣ���ValidationType.Autoѡ����Ķ������Զ��ĸ����ĵ������ʺϵ���֤���͡�����֤�����г����κδ����ᴥ��ValidationEventHandler�¼�������δ�ṩ�¼�ValidationEventHandler�¼��������������׳�һ��XML�쳣������ValidationEventHandler�¼��������������ڲ��κ���XMLԴ�ļ��д��ڴ���������XML�쳣��һ�ַ�����Ҫע�������Ķ�����ԭ���Ǽ���һ���ĵ��Ƿ��Ǹ�ʽ���õģ��Լ������ĵ��Ƿ����ܹ��Ǻϡ���������֤���Ķ�������һ�������صĸ�ʽ������XML�ĵ���ֻ�ᴥ��XmlException�쳣,�����ᴥ���������¼���
��֤�������û���Read������ǰ�ƶ�ָ��ʱ��һ���ڵ㱻�����Ͷ�ȡ�������ô������Ĵ�����֤���ڲ��Ķ�������֤�����ǻ��ڽڵ����ͼ���Ҫ������֤���͡���ȷ�Ͻڵ����е����Ժͽڵ��������ӽڵ��Ƿ�������֤������
��֤�������ڲ�����������ͬ�����Ķ�����DTD�������ͼܹ�������(schema builder)��DTD������������ǰ�ڵ������ݺͲ�����DTD���������ܹ�����������XDR����XSD�ܹ��Ե�ǰ�Ľڵ㹹��һ��SOM��schema object model�����ܹ���������ʵ����������ָ��ΪXDR��XSD�ܹ��������Ļ��ࡣΪʲô�أ���ȻXDR��XSD�ܹ���������ͬ�ķ������ӹ�������������������ִ��ʱ������û��������
�����ڵ����ӽڵ㣬����һ����ʱ���Ķ����ռ��ӽڵ���Ϣ�����˽ڵ��ļܹ���Ϣ�ܱ���ȫ����֤�������Կ�ͼ�壺
ע�⣬����XmlValidatingReader���Ĺ��캯�����Խ���һ��XmlReader����Ϊ���Ķ��������Ǹ��Ķ���ֻ����XmlTextReader����һ��ʵ������������һ����������ʵ��������ζ���㲻����������XmlReader�������ࣨ����һ���Զ�����XML�Ķ���������XmlValidatingReader�����ڲ����������Ķ�����һ����XmlTextReader���Ѵ������Ķ�����ʽ��ת����XmlTextReader�ࡣ��������XmlNodeReader�����Զ������Ķ������������ڱ���ʱ������������ʱ�׳�һ���쳣��
�ڵ��Ķ���
XML�Ķ����ṩһ������ʽ�ķ�����һ��һ���ڵ��Ķ����������ĵ������ݡ���ĿǰΪֹ�����Ǽ���Դ�ļ���һ������Ӳ�̵���������һ���ַ�������Ȼ�������Dz��ܱ�֤��ʵ���л��ṩһ��Դ�ļ���XMLDOM���������ǡ������������£�������Ҫһ�������ر��Ķ��������ر����ࡣ������������.NET Framework�ṩ��XmlNodeReader�ࡣ
����XmlTextReader����ָ��XML�������нڵ�һ����XmlNodeReader������XMLDOM���������нڵ㡣XMLDOM�ࣨ��.NET Framework�е�XmlDocument�ࣩ֧�ֻ���Xpath�ķ���������SelectNodes������SelectSingleNode��������Щ�����������ǰ�ƥ���Ľڵ������ڴ��С���������Ҫ���������е����нڵ㣬�ڵ��Ķ�����������ʽ���������ڵ����Ķ������и��ߵ�Ч�ʣ�
// xmldomNode is the XML DOM node
XmlNodeReader nodeReader = new XmlNodeReader(xmldomNode);
while (nodeReader.Read())
{
// Do something here
}
����Ҫ�������ļ�������web.cofig�ļ����������Զ���������ʱ���Ȱ���Щ�������䵽XMLDOM���У�Ȼ����XmlNodeReader����XMLDOM�����ϴ�����Щ���ݡ���Ҳ�Ǹ�Ч�ġ�
XmlValidatingReader��ʵ����XmlReader�࣬���ṩ��֧�ֶ������͵�XML��֤��DTD��XML-Data Reduced(XDR)�ܹ����Լ�XSD��DTD��XSD����W3C�ٷ��Ƽ��ġ���XDR��Microsoft�������ڴ���XML���ܵ�һ�ָ�ʽ��
��������XmlVlidatingReader��ȥ��֤XML�ĵ���XMLƬ�ϡ�XmlValidatingReader�����XML�Ķ�������---��һ�����͵�XMLTextReader��ʵ����XMLTextReade���ڶ�ȡ�ĵ��Ľڵ㣬����XmlVlidatingReader������Ҫ����֤����ȥ��֤ÿһ��XML�顣
XmlVlidatingReader��ֻʵ���˷dz�С��XML�Ķ����ر���һ�������Ӽ����������ǹ�����һ���Ѵ��ڵ�XML�Ķ������棬�����ӷ��������ԡ����������������Ĺ��캯�������ᷢ���������Ե�����һ���Ѵ��ڵ��ı��Ķ���������֤��XML�Ķ�������ֱ�ӵĴ�һ���ļ���һ��URL���л��������Ĺ��캯���б����£�
public XmlValidatingReader(XmlReader);
public XmlValidatingReader(Stream, XmlNodeType, XmlParserContext);
public XmlValidatingReader(string, XmlNodeType, XmlParserContext);
����֤��XML�Ķ����ܷ����κε�XMLƬ�ϣ�XMLƬ��ͨ��һ��string����һ��stream�ṩ,Ҳ���Է����κ��Ķ����ṩ��XML�ĵ���
XmlVlidatingReader�������ش��ı��ķ����dz���(��������reader����˵)�������� Read������Skip��ReadTypedValue������Skip����������ǰ�ڵ����е��ӽڵ㣨�㲻������������ʽ��XML�ı��������൱���õ��㷨����Skip����Ҳ��֤�����������ݡ�ReadTypedValue��������ָ�� XML �ܹ� (XSD) ���Ͷ�Ӧ��CLR���͡������÷����ҵ���XSD���Ͷ�Ӧ��CLR���ͣ���CLR���������������Ҳ��������Ѹýڵ���ֵ��Ϊһ���ַ���ֵ���ء�
����֤��XML�Ķ�����������������һ�����ڽڵ����Ķ���������֤��ǰ�ڵ��Ľṹ�Ƿ����ϵ�ǰ��schema����֤������ʽ�ģ���û�з������ر�ʾ�ĵ��Ƿ���Ч�IJ���ֵ��ͨ���㶼����Read����ȥ��������XML�ĵ���ʵ���ϣ���Ҳ�����ô���֤���Ķ���ȥ��XML�ĵ�����ÿһ���У���ǰ�����ʵĽڵ��Ľṹ�Ƿ���ָ����schema���ϣ����������ϣ��׳�һ���쳣��ͼ����һ������̨Ӧ�ó���������һ��Ҫ�����ļ����������У�����������֤������
Figure 4 Console App
using System;
using System.Xml;
using System.Xml.Schema;
class MyXmlValidApp
{
public MyXmlValidApp(String fileName)
{
try {
Validate(fileName);
}
catch (Exception e) {
Console.WriteLine("Error: {0}", e.Message);
Console.WriteLine("Exception raised: {0}",
e.GetType().ToString());
}
}
private void Validate(String fileName)
{
XmlTextReader xtr = new XmlTextReader(fileName);
XmlValidatingReader vreader = new XmlValidatingReader(xtr);
vreader.ValidationType = ValidationType.Auto;
vreader.ValidationEventHandler += new
ValidationEventHandler(this.ValidationEventHandle);
vreader.Read();
vreader.MoveToContent();
while (vreader.Read()) {}
xtr.Close();
vreader.Close();
}
public void ValidationEventHandle(Object sender,
ValidationEventArgs args)
{
Console.Write("Validation error: " + args.Message + " ");
}
public static void Main(String[] args)
{
MyXmlValidApp o = new MyXmlValidApp(args[0]);
return;
}
}
ValidationType����������֤�����ͣ���������:DTD, XSD, XDR����none������û��ָ����֤�����ͣ���ValidationType.Autoѡ����Ķ������Զ��ĸ����ĵ������ʺϵ���֤���͡�����֤�����г����κδ����ᴥ��ValidationEventHandler�¼�������δ�ṩ�¼�ValidationEventHandler�¼��������������׳�һ��XML�쳣������ValidationEventHandler�¼��������������ڲ��κ���XMLԴ�ļ��д��ڴ���������XML�쳣��һ�ַ�����Ҫע�������Ķ�����ԭ���Ǽ���һ���ĵ��Ƿ��Ǹ�ʽ���õģ��Լ������ĵ��Ƿ����ܹ��Ǻϡ���������֤���Ķ�������һ�������صĸ�ʽ������XML�ĵ���ֻ�ᴥ��XmlException�쳣,�����ᴥ���������¼���
��֤�������û���Read������ǰ�ƶ�ָ��ʱ��һ���ڵ㱻�����Ͷ�ȡ�������ô������Ĵ�����֤���ڲ��Ķ�������֤�����ǻ��ڽڵ����ͼ���Ҫ������֤���͡���ȷ�Ͻڵ����е����Ժͽڵ��������ӽڵ��Ƿ�������֤������
��֤�������ڲ�����������ͬ�����Ķ�����DTD�������ͼܹ�������(schema builder)��DTD������������ǰ�ڵ������ݺͲ�����DTD���������ܹ�����������XDR����XSD�ܹ��Ե�ǰ�Ľڵ㹹��һ��SOM��schema object model�����ܹ���������ʵ����������ָ��ΪXDR��XSD�ܹ��������Ļ��ࡣΪʲô�أ���ȻXDR��XSD�ܹ���������ͬ�ķ������ӹ�������������������ִ��ʱ������û��������
�����ڵ����ӽڵ㣬����һ����ʱ���Ķ����ռ��ӽڵ���Ϣ�����˽ڵ��ļܹ���Ϣ�ܱ���ȫ����֤�������Կ�ͼ�壺
ע�⣬����XmlValidatingReader���Ĺ��캯�����Խ���һ��XmlReader����Ϊ���Ķ��������Ǹ��Ķ���ֻ����XmlTextReader����һ��ʵ������������һ����������ʵ��������ζ���㲻����������XmlReader�������ࣨ����һ���Զ�����XML�Ķ���������XmlValidatingReader�����ڲ����������Ķ�����һ����XmlTextReader���Ѵ������Ķ�����ʽ��ת����XmlTextReader�ࡣ��������XmlNodeReader�����Զ������Ķ������������ڱ���ʱ������������ʱ�׳�һ���쳣��
�ڵ��Ķ���
XML�Ķ����ṩһ������ʽ�ķ�����һ��һ���ڵ��Ķ����������ĵ������ݡ���ĿǰΪֹ�����Ǽ���Դ�ļ���һ������Ӳ�̵���������һ���ַ�������Ȼ�������Dz��ܱ�֤��ʵ���л��ṩһ��Դ�ļ���XMLDOM���������ǡ������������£�������Ҫһ�������ر��Ķ��������ر����ࡣ������������.NET Framework�ṩ��XmlNodeReader�ࡣ
����XmlTextReader����ָ��XML�������нڵ�һ����XmlNodeReader������XMLDOM���������нڵ㡣XMLDOM�ࣨ��.NET Framework�е�XmlDocument�ࣩ֧�ֻ���Xpath�ķ���������SelectNodes������SelectSingleNode��������Щ�����������ǰ�ƥ���Ľڵ������ڴ��С���������Ҫ���������е����нڵ㣬�ڵ��Ķ�����������ʽ���������ڵ����Ķ������и��ߵ�Ч�ʣ�
// xmldomNode is the XML DOM node
XmlNodeReader nodeReader = new XmlNodeReader(xmldomNode);
while (nodeReader.Read())
{
// Do something here
}
����Ҫ�������ļ�������web.cofig�ļ����������Զ���������ʱ���Ȱ���Щ�������䵽XMLDOM���У�Ȼ����XmlNodeReader����XMLDOM�����ϴ�����Щ���ݡ���Ҳ�Ǹ�Ч�ġ�
- ת����ע����Դ��ITѧϰ�� ��ַ��http://www.t086.com/ �����������Ƽ�������
- �ر������� ��վ�������ر�������ֹת�ص�ר�������������¿�������ת�أ���������ע��������ԭʼ���ߡ����°�Ȩ������ԭʼ�������С����ڱ���վת�����µĸ��˺���վ�����DZ�ʾ������л�⡣������վת�ص������а�Ȩ��������ϵ���ǣ����ǻᾡ�����Ը�����
- �������е���ɫ
- �������ж�IP��ַ��A��B���C��
- ������ϵ��Ц�� (ʷ����ȫ��
- ��Google���������ŵ���ͨv4.0
- ���ٶ�ͳ��URL��hm������utm�����Ķ�Ӧ��ϵ
- ��ƻ������MACbook Air���ݼ���ȫ
- ���������ԡ���װ Windows XP ����ϵͳ��ͼ��ȫ����
- ��Linux��ʹ��host��dig��nslookup��ѯDNS
- �����Լ���VPS�Google��������
- ��С�ڴ�VPS֮Nginx+PHP-fpm�߸����Ż���ѹ�����Է���
- ��������������ѡʳƷ����2020�ļ��ȵ�Ͷ�ʲ��Ժ���������
- ���ٶȽ�����ȷʶ���ٶ�֩��
- ��ͼƬ�Ż��Ĺ����Ƽ�
- �������˴�ҵ��վ����ָ��(�ڶ���)
- ��Linux�ļ�ϵͳֻ��Read-only file system�Ŀ��ٽ�������
- ��win2000server�����ܹ��������������أ�ֱ�ӽ��룿
- ��linux�´�����ɾ������Ӳ����
- ��linux ��������ǰ��̨�л�
- ��������վ��YISOU���Σ����ν����ͷ��Ļظ�
- ����ַ��ȫ����ȫ��4000������ַPR��alexa��Ϣ
- ������������������̸�����ɶ��ر�
- ��������������ѡʳƷ����2020�ļ��ȵ�Ͷ�ʲ��Ժ���������
- �����ڵ�����֤50���ƴ�50����ָ֤�������Ĺ���
- ����֤50����Щ��Ʊ_��֤50Ȩ����������
- ������300����֤50����֤500��ָ��2019���ڶ��ζ��ڵ���������
- ������300��ֵ/�ɳ�ָ�����Ʒ����������й�ƽ��Ȩ���½�
- ����ָ֤��������֤50��ָ��������
- ����ָ֤��������֤����ָ��������
- ����ָ֤��������֤100ָ��������
- ����ָ֤����������300ָ��������