无法创建xml文件
本文关键字:文件 xml 创建 | 更新日期: 2023-09-27 18:08:16
我试图创建一个xml文档,其中包含从测试中获取的信息。基本上,我使用{get; set:}
来获取信息,当我走过程序时,你会看到文件信息通过的地方,但我要么得到无法创建xml文档的错误,要么它被创建但是空白的。
代码如下:
public class XmlCreate
{
public string Types { set; get; }
public DateTime Time { get; set; }
public bool done{ get; set; }
public void SerializetoXml(IRepo repo)
{
var filename = string.Format("{0}__{1}", DateTime.Now.ToString("yyyyMMdd"), "Log.xml");
var path =
@"C:'TestDocs'artifacts";
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
var fullpath = Path.Combine(filename, path);
var serializer = new XmlSerializer((typeof(IRepo)));
var textwriter = new StreamWriter(filename);
serializer.Serialize(textwriter, repo);
textwriter.Close();
}
}
XML序列化器需要提前知道它将遇到的所有对象类型。如果您仍然尝试使用接口而不是类类型创建序列化器,那么这可能是问题的一部分;接口不一定公开对象的所有公共属性。否则,您需要确保包含XML序列化器无法从您的属性(例如,由于多态性)自动推断的任何类型。在根对象上使用XmlInclude属性将这些类型通知序列化器。例子:
// XmlInclude is necessary because our class doesn't explicitly mention derived object
[XmlInclude(typeof(ObjectDerived))]
class MyRootClass {
public ObjectBase { get; set; }
}
class ObjectBase {
// some properties here
}
class ObjectDerived : ObjectBase {
// more properties here
}
...
var serializer = new XmlSerializer(typeof(MyRootClass));
使用完整路径
Path.Combine(path, filename)
而不是相反。你的路径名错了
编辑:你不能通过传递一个接口对象来序列化。您可以按照此链接提供的方式修改代码或者这个