XmlReader状态应为Interactive

时间:2014-09-05 08:33:09

标签: c# linq-to-xml

我正在尝试将xml加载到XDocument对象中。

public void ValidateRules(XmlReader xml)
{
    xml.MoveToContent();
    XDocument xDoc = new XDocument();
    xDoc = XDocument.Load(xml);
}

但是,我一直收到错误" XmlReader状态应该是Interactive"。我为此搜索了一个解决方法,并在顶部添加了MoveToContent()方法(正如提到的那样,这会将ReadState更改为Interactive),但它没有工作。 ReadState是只读的,我无法更改该值。

这可能是什么问题?

P.S。我尝试加载的XML文件有一个DTD引用。它与XML存在于同一路径中。不知道这是否有意义。

2 个答案:

答案 0 :(得分:2)

XML数据为空尝试通过阅读器读取。 读者的ReadState情况将为Initial或EndOfFile(https://msdn.microsoft.com/en-us/library/fxtcxd31.aspx

public void ValidateRules(XmlReader reader)
{
    XDocument xDoc = XDocument.Load(reader);
}

答案 1 :(得分:0)

鉴于你的功能的签名,你可以这样做:

var xDoc = XDocument.Parse(xml.ReadOuterXml());

或者,如果您的设计不需要,请不要使用XmlReader - 如果您所显示的代码之外的某些内容不需要var xDoc = XDocument.Load(PATH_TO_YOUR_FILE); ,你可以跳过额外的抽象层,只需使用:

var xDoc = XDocument.Parse(YOUR_XML_STRING);

{{1}}