0
我不是很熟悉.NET的XML库,并试图将我的头包裹在IXmlSerializable接口中。我正在开发一个Windows Store应用程序(W8),并希望使用IXmlSerializable接口,但遇到问题。 XmlTextWriter在Windows Store应用程序中不可用,所以我使用XmlWriter的工厂方法,但是我的代码不会向XML文件(其空白)输出任何内容。Windows 8商店应用程序XmlWriter不会写任何文件
如果我使用XmlSerializer,XML文件按预期输出,但希望实现IXmlSerializable,因为在我的生产应用程序中,我将拥有专用字段。
下面是示例代码,我使用
public class XMLTest : IXmlSerializable
{
private string name;
public string Name { get { return this.name; } set { this.name = value; } }
private XMLTest() { }
public XMLTest(string name)
{
this.name = name;
}
public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
}
public void ReadXml(System.Xml.XmlReader reader)
{
throw new NotImplementedException();
}
public void WriteXml(System.Xml.XmlWriter writer)
{
writer.WriteAttributeString("Name", this.name);
}
}
在我的XAML代码背后
private async void saveButton_Click(object sender, RoutedEventArgs e)
{
XMLTest t = new XMLTest("test name");
StorageFolder folder = ApplicationData.Current.LocalFolder;
Stream fs = await folder.OpenStreamForWriteAsync("testingXML.xml", CreationCollisionOption.ReplaceExisting);
XmlWriterSettings settings = new XmlWriterSettings();
settings.ConformanceLevel = ConformanceLevel.Auto;
var x = XmlWriter.Create(fs, settings);
//XmlSerializer xs = new XmlSerializer(t.GetType());
//xs.Serialize(fs, t);
t.WriteXml(x);
fs.Dispose();
}
你有没有打过电话'x.Close()'?我想知道它是否全部缓冲......(理想情况下,对'fs'和'x'使用'using'语句。) –
调试它们时fs和x看起来像什么,它们是否有信息? – Bit
@JonSkeet看起来这是一个缓冲问题。在xml编写器上调用刷新修复了这个问题。谢谢。 –