我正在尝试将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存在于同一路径中。不知道这是否有意义。
答案 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}}