【发布时间】:2013-12-04 23:15:07
【问题描述】:
当我尝试读取 XML 文件时收到此错误消息
Unhandled Exception: System.Xml.XmlException: 'xi' is an undeclared namespace. Line 12, position 18.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg, Int32 lineNo, Int32 linePos)
at System.Xml.XmlTextReaderImpl.LookupNamespace(NodeData node)
at System.Xml.XmlTextReaderImpl.ElementNamespaceLookup()
at System.Xml.XmlTextReaderImpl.ParseAttributes()
at System.Xml.XmlTextReaderImpl.ParseElement()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlTextReader.Read()
读取 XML 的代码:
XmlTextReader reader = new XmlTextReader("file.xml");
while (reader.Read())
{
// Do some work here on the data.
Console.WriteLine(reader.Name);
}
Console.ReadLine();
xml文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<doh>
<!-- Available Resources-->
<servers>
<xi:include href="file.xml"/>
</servers>
【问题讨论】:
-
您的 XML 无效,没有定义
xi命名空间。 -
xi 是命名空间的别名,但未定义 xmlns:{alias}={namespace-uri}。因此,您使用的是“未声明的前缀”
-
我别无选择。我必须按原样使用 xml 文件。有窍门吗?还是忽略 xi 的解决方法?
-
仅供参考,您不应使用
new XmlTextReader()或new XmlTextWriter()。自 .NET 2.0 以来,它们已被弃用。请改用XmlReader.Create()或XmlWriter.Create()。 -
你是对的——你别无选择。你永远不会完成这项工作。 XML 根本无效。这不是您缺乏知识的问题 - XML 简直就是垃圾。满足读取此文件要求的唯一方法是创建文件的人更改它。否则,是时候找一份新工作了。