我正在开发一个项目,我希望用户能够将字符串保存为XML。该程序能够将XML文件加载到程序中,但无法另存为XML。 我之前在C#上做过这个项目,我希望在vb.net中使用完全相同的功能
这是我保存为XML文件的vb.net代码:
这是按钮点击:
Private Sub ExportToXMLFileToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExportToXMLFileToolStripMenuItem.Click
Try
If (SaveFileDialog1.ShowDialog = DialogResult.OK) Then
Dim thefilename As String = SaveFileDialog1.FileName
SaveXML(thefilename)
End If
Catch ex As Exception
MessageBox.Show(ex.ToString, "Error in exporting XML")
End Try
End Sub
这是SaveXML函数:
Private Sub SaveXML(ByVal fileName As String)
'Animal array
Dim staff As String = staffForm.TheName
Dim staffmgr As ListManager(Of String) = New ListManager(Of String)
Dim index As Integer = 0
Do While (index < staffmgr.Count)
staff = staffmgr.GetAt(index)
index = (index + 1)
Loop
Dim XMLSerial As XMLSerializerUtillity = New XMLSerializerUtillity
XMLSerial.SerializeToFile(fileName, staff)
End Sub
XMLSerializerUtillity类和SerializeToFile函数:
Public Class XMLSerializerUtillity
Public Function SerializeToFile(Of T As {Class})(ByVal filePath As String, ByVal obj As T) As Boolean
Dim file As Boolean = True
Dim serializer As XmlSerializer = New XmlSerializer(GetType(T))
Dim writer As TextWriter = New StreamWriter(filePath)
Try
serializer.Serialize(writer, obj)
Finally
If (Not (writer) Is Nothing) Then
writer.Close()
End If
End Try
Return file
End Function
问题是保存后创建的XML文件为空。它没有按预期保存任何字符串。
有谁知道这个问题以及如何解决它?
如果有必要,我可以包含有效的C#代码。它与我所拥有的代码基本相同&#34;翻译&#34;进入vb.net代码。
更新
以下是适用的C#代码:
按下按钮:
private void exportToToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
if(saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string thefilename = saveFileDialog1.FileName;
SaveXML(thefilename);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error in exporting XML");
}
}
private void SaveXML(string fileName)
{
//Animal array
string staff = staffForm.TheName;
ListManager<string> staffmgr = new ListManager<string>();
for (int index = 0; index < staffmgr.Count; index++)
{
staff = staffmgr.GetAt(index);
}
XMLSerializerUtillity XMLSerial = new XMLSerializerUtillity();
XMLSerial.SerializeToFile(fileName, staff);
}
public class XMLSerializerUtillity
{
/// <summary>
/// Serialize to XML
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="the filePath"></param>
/// <param name=" the obj"></param>
/// <returns></returns>
public bool SerializeToFile<T>(string filePath, T obj)
{
bool file = true;
XmlSerializer serializer = new XmlSerializer(typeof(T));
TextWriter writer = new StreamWriter(filePath);
try
{
serializer.Serialize(writer, obj);
}
finally
{
if (writer != null)
writer.Close();
}
return file;
}
更新2:
当我尝试时:serializer.Serialize(writer, "Hello")
我确实工作了。
但是,我想要它做的是保存StaffForm.TheName属性