我正在尝试将数据集读取为 xml 并将其加载到 XML 文档中。
XmlDocument contractHistoryXMLSchemaDoc = new XmlDocument();
using (MemoryStream ms = new MemoryStream())
{
//XmlWriterSettings xmlWSettings = new XmlWriterSettings();
//xmlWSettings.ConformanceLevel = ConformanceLevel.Auto;
using (XmlWriter xmlW = XmlWriter.Create(ms))
{
xmlW.WriteStartDocument();
dsContract.WriteXmlSchema(xmlW);
xmlW.WriteEndDocument();
xmlW.Close();
using (XmlReader xmlR = XmlReader.Create(ms))
{
contractHistoryXMLSchemaDoc.Load(xmlR);
}
}
}
但我收到错误 - “根元素丢失”。
有什么想法吗?
更新
当我执行 xmlR.ReadInnerXML() 时,它是空的。有谁知道为什么吗?
NLV
最佳答案
关于原始代码的一些事情:
- 您不需要调用写入开始和结束文档方法:
DataSet.WriteXmlSchema
生成完整、格式良好的 xsd。 - 编写架构后,流位于其末尾,因此当您调用
XmlDocument.Load
时,XmlReader
无需读取任何内容。
所以最主要的是您需要使用Seek
重置MemoryStream
的位置。您还可以大大简化整个方法:您不需要 XmlReader
或 writer。以下对我有用:
XmlDocument xd = new XmlDocument();
using(MemoryStream ms = new MemoryStream())
{
dsContract.WriteXmlSchema(ms);
// Reset the position to the start of the stream
ms.Seek(0, SeekOrigin.Begin);
xd.Load(ms);
}
关于c# - 数据集 -> XML 文档 - 将数据集加载到 XML 文档中 - C#.Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2667063/