XmlReader状态应为“交互式”
本文关键字:交互式 状态 XmlReader | 更新日期: 2023-09-27 18:20:41
我正在尝试将xml加载到XDocument对象中。
public void ValidateRules(XmlReader xml)
{
xml.MoveToContent();
XDocument xDoc = new XDocument();
xDoc = XDocument.Load(xml);
}
但是,我一直收到错误"XmlReader状态应该是Interactive"。我搜索了一个解决方案,并在顶部添加了MoveToContent()方法(正如前面提到的,这将把ReadState更改为Interactive),但它不起作用。ReadState是只读的,我无法更改该值。
这里有什么问题?
附言:我试图加载的XML文件有一个DTD引用。它与XML位于同一路径。不知道这是否有任何意义。
XML数据为null,尝试通过读取器读取。读取器的ReadState情况将是Initial或EndOfFile(https://msdn.microsoft.com/en-us/library/fxtcxd31.aspx)
public void ValidateRules(XmlReader reader)
{
XDocument xDoc = XDocument.Load(reader);
}
给定函数的签名,您可以执行:
var xDoc = XDocument.Parse(xml.ReadOuterXml());
或者,如果你的设计不需要XmlReader
,就不要使用它——如果你所展示的代码之外的东西不需要它,你可以跳过额外的抽象层,简单地使用:
var xDoc = XDocument.Load(PATH_TO_YOUR_FILE);
或
var xDoc = XDocument.Parse(YOUR_XML_STRING);