/// <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> /// 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); }
/// <summary> /// 派生クラスでオーバーライドされると、パッケージの読み込みを行うメソッドを定義します。 /// </summary> /// <param name="info"></param> /// <returns></returns> public abstract XmlContentsPackage LoadPackage(XmlContentsPackageReadInfo info);