海纳百川

读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>

</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编辑  收藏  举报

导航