/// <summary> /// PackageのVersionを読み込みます。 /// </summary> /// <param name="info"></param> /// <param name="package"></param> /// <returns></returns> public string ReadVersion(XmlContentsPackageReadInfo info, out XmlContentsPackage package) { package = info.Owner.CreateXmlContentsPackage(info.PackageName); string filename = info.FileName; XmlTextReader reader = new XmlTextReader(filename); reader.WhitespaceHandling = WhitespaceHandling.Significant; try { while (reader.Read()) { if (reader.IsStartElement(package.PackageRootElement)) { string version = reader.GetAttribute(package.PackageRootVersionAttribute); return(version ?? ""); } } } catch (XmlException ex) { System.Diagnostics.Debug.WriteLine(ex.GetType().FullName + "\r\n" + ex.Message); throw; } finally { if (reader != null) { reader.Close(); } } return(""); }
/// <summary> /// Packageを保存します。 /// </summary> /// <param name="info"></param> public override void SavePackage(XmlContentsPackageWriteInfo info) { string filename = info.FileName; XmlContentsPackage package = info.Package; XmlWriter writer = XmlWriter.Create(filename, new XmlWriterSettings() { Indent = true, IndentChars = "\t" }); try { writer.WriteStartDocument(); writer.WriteStartElement(package.PackageRootElement); writer.WriteAttributeString(package.PackageRootCountAttribute, package.XmlContentsTable.Count.ToString()); writer.WriteAttributeString(package.PackageRootVersionAttribute, this.Version); foreach (XmlContents contents in package.XmlContentsTable.Values) { XmlContentsWriteInfo contentsInfo = new XmlContentsWriteInfo() { Writer = writer, Contents = contents }; this.SaveContents(contentsInfo); //contents.SaveFile(writer); } writer.WriteEndElement(); writer.WriteEndDocument(); } finally { if (writer != null) { writer.Close(); } } }
private void RefreshListView() { this.listView1.Items.Clear(); string packageName = this.comboBox1.Text; if (!this.m_TargetModel.Packages.ContainsKey(packageName)) { return; } XmlContentsPackage package = this.m_TargetModel.Packages[packageName]; foreach (XmlContents contents in package.XmlContentsTable.Values) { this.AddItemToListView(packageName + ":", contents.RootItem); } }
/// <summary> /// XmlContentsPackageを読み込みます。 /// </summary> /// <param name="info"></param> /// <returns></returns> public override XmlContentsPackage LoadPackage(XmlContentsPackageReadInfo info) { //XmlContentsPackage package = info.Owner.CreateXmlContentsPackage(info.PackageName); //Version判定のために先読みしたPackageを使用する XmlContentsPackage package = info.PreLoadedPackage; string filename = info.FileName; XmlTextReader reader = new XmlTextReader(filename); reader.WhitespaceHandling = WhitespaceHandling.Significant; try { while (reader.Read()) { if (reader.IsStartElement(package.PackageRootElement)) { int count = int.Parse(reader.GetAttribute(package.PackageRootCountAttribute)); for (int i = 0; i < count; i++) { XmlContentsReadInfo contentsInfo = new XmlContentsReadInfo() { Reader = reader, Package = package }; XmlContents contents = this.LoadContents(contentsInfo); package.AddXmlContents(contents); } break; } } } catch (XmlException ex) { System.Diagnostics.Debug.WriteLine(ex.GetType().FullName + "\r\n" + ex.Message); throw; } finally { if (reader != null) { reader.Close(); } } return(package); }