读xml文件时关于"xx"是未声明的命名空间错误的处理
读xml文件时关于"xx"是未声明的命名空间错误的处理
<?xml version="1.0" encoding="utf-8"?>
<BookList>
<Book Name="我的二战回忆录" Author="丘吉尔" Price ="135">
<Chapter Index="Chapter1" Title="胜利者的蠢事" />
<Chapter Index="Chapter2" Title="和平的鼎盛时期" />
<Chapter Index="Chapter3" Title="潜伏的危险" />
<Chapter Index="Chapter4" Title="阿道夫.希特勒" />
<gx:Chapter Name ="Test"></gx:Chapter>
</Book>
<Book Name="泰戈尔诗集" Author="泰戈尔" Price ="20">
<Chapter Index="Chapter1" Title="园丁集" />
<Chapter Index="Chapter2" Title="飞鸟集" />
</Book>
XmlDocument xmlDoc = new XmlDocument();
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("gx", "http://www.w3.org/2001/XMLSchema-instance");
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
XmlReaderSettings xset = new XmlReaderSettings();
xset.ConformanceLevel = ConformanceLevel.Fragment;
System.Xml.XmlReader rd = System.Xml.XmlReader.Create(new StreamReader(xmlFilePath), xset, context);
xmlDoc.Load(rd);
<?xml version="1.0" encoding="utf-8"?>
<BookList>
<Book Name="我的二战回忆录" Author="丘吉尔" Price ="135">
<Chapter Index="Chapter1" Title="胜利者的蠢事" />
<Chapter Index="Chapter2" Title="和平的鼎盛时期" />
<Chapter Index="Chapter3" Title="潜伏的危险" />
<Chapter Index="Chapter4" Title="阿道夫.希特勒" />
<gx:Chapter Name ="Test"></gx:Chapter>
</Book>
<Book Name="泰戈尔诗集" Author="泰戈尔" Price ="20">
<Chapter Index="Chapter1" Title="园丁集" />
<Chapter Index="Chapter2" Title="飞鸟集" />
</Book>
</BookList>
对于上面的XML文件,如果直接用如下的方式Load XML文件,就会出现gx是未声明的命名空间错误。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlFilePath);
因此需要做如下处理才能Load XML文件
XmlDocument xmlDoc = new XmlDocument();
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("gx", "http://www.w3.org/2001/XMLSchema-instance");
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
XmlReaderSettings xset = new XmlReaderSettings();
xset.ConformanceLevel = ConformanceLevel.Fragment;
System.Xml.XmlReader rd = System.Xml.XmlReader.Create(new StreamReader(xmlFilePath), xset, context);
xmlDoc.Load(rd);
posted on 2010-07-19 22:48 These days 阅读(2002) 评论(1) 编辑 收藏 举报