0
我是Xml的新手,編寫了創建Xml的代碼並將其讀回。 但我想在Xml結構中進行一些修改。將多個對象寫入/讀入Xml C#
我不想要的是ArrayOfMovie標籤,它是作爲根標籤頁來的。 但是,當我寫入多個對象到Xml它顯示一個ArrayOfMovie標籤。由於我必須保持班級的結構,因此上部標籤爲電影,然後是其細節,然後是其他電影。如果您告訴代碼修改xml,請告訴程序讀取新構建的xml。
下面是場景的代碼:
// Movies class which contains the list of Movie objects
public class Movies
{
public List<Movie> movieList = new List<Movie>();
}
//Movie class
public class Movie
{
public string Title
{ get; set; }
public int Rating
{ get; set; }
public DateTime ReleaseDate
{ get; set; }
}
private void CreateXml_Click(object sender, EventArgs e)
{
string filePath = path + textBox_XmlFileName.Text+".xml";
Movie firstMov = new Movie();
firstMov.Title = "Shrek";
firstMov.Rating = 2;
firstMov.ReleaseDate = DateTime.Now;
Movie secondMov = new Movie();
secondMov.Title = "Spider Man";
secondMov.Rating = 4;
secondMov.ReleaseDate = DateTime.Now;
Movies moviesObj = new Movies();
moviesObj.movieList.Add(firstMov);
moviesObj.movieList.Add(secondMov);
List<Movie> movList = new List<Movie>() { firstMov,secondMov};
XmlHandler.SerializeToXml(moviesObj.movieList, filePath);
}
// The static class and funcion that creates the xml file
public static void SerializeToXml(List<Movie> movies ,string filePath)
{
XmlSerializer xls= new XmlSerializer(typeof(List<Movie>));
TextWriter tw = new StreamWriter(filePath);
xls.Serialize(tw, movies);
tw.Close();
}
//創建以下輸出
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfMovie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Movie>
<Title>Shrek</Title>
<Rating>2</Rating>
<ReleaseDate>2014-05-25T22:55:17.2811063+05:00</ReleaseDate>
</Movie>
<Movie>
<Title>Spider Man</Title>
<Rating>4</Rating>
<ReleaseDate>2014-05-25T22:55:17.2811063+05:00</ReleaseDate>
</Movie>
</ArrayOfMovie>
//讀取文件導入對象的代碼
public static List<Movie> DeserializeFromXml(string filePath)
{
XmlSerializer deserializer = new XmlSerializer(typeof(List<Movie>));
TextReader tr = new StreamReader(@filePath);
List<Movie> movie;
movie = (List<Movie>)deserializer.Deserialize(tr);
tr.Close();
return movie;
}
XML文檔具有**單個**根元素。嘗試使用多個根元素創建XML文檔會使這種不合規XML文檔的消耗成爲一種負擔。你爲什麼想這麼做? – elgonzo
我想刪除ArrayOfMovies標籤。其餘的東西創建是好的。並且還想要將其重新啓動。 –
那麼,爲什麼你要刪除* ArrayOfMovies *標籤呢?它只是使得反序列化比必要的更加複雜。 – elgonzo