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位于同一路径。不知道这是否有任何意义。

XmlReader状态应为“交互式”

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);