Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // journalXML
- // Author: Richard Barnes
- // Date: March 1st, 2021
- // Updated: March 2nd, 2021
- // Purpose: A class to create the xml required for submission to the CrossRef endpoint.
- // This file was generated from a template xml document called journal.xml
- // These files are stored in the root of the Git structure in a folder called Specifications.
- // From a visual studio cmd prompt use;
- // xsd journal.xml
- // xsd /c /l:cs journal.xsd
- using System;
- using System.Globalization;
- using System.Web.Configuration;
- namespace NORMIN.DOI
- {
- /// <remarks/>
- [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
- [System.SerializableAttribute()]
- [System.Diagnostics.DebuggerStepThroughAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://www.crossref.org/schema/4.4.2")]
- [System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.crossref.org/schema/4.4.2", IsNullable=false)]
- public class DoiBatch {
- private DoiBatchHead[] _headField;
- private DoiBatchBodyJournalJournalMetadata[][][] _bodyField;
- private string _versionField;
- /// <remarks/>
- [System.Xml.Serialization.XmlElementAttribute("head")]
- public DoiBatchHead[] Head {
- get => this._headField;
- set => this._headField = value;
- }
- /// <remarks/>
- [System.Xml.Serialization.XmlArrayItemAttribute("journal", typeof(DoiBatchBodyJournalJournalMetadata[]), IsNullable=false)]
- [System.Xml.Serialization.XmlArrayItemAttribute("journal_metadata", typeof(DoiBatchBodyJournalJournalMetadata), IsNullable=false, NestingLevel=1)]
- public DoiBatchBodyJournalJournalMetadata[][][] Body {
- get => this._bodyField;
- set => this._bodyField = value;
- }
- /// <remarks/>
- [System.Xml.Serialization.XmlAttributeAttribute()]
- public string Version {
- get => this._versionField;
- set => this._versionField = value;
- }
- }
- /// <remarks/>
- [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
- [System.SerializableAttribute()]
- [System.Diagnostics.DebuggerStepThroughAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://www.crossref.org/schema/4.4.2")]
- public class DoiBatchHead {
- private string _doiBatchIdField;
- private string _timestampField;
- private string _registrantField;
- private DoiBatchHeadDepositor[] _depositorField;
- /// <remarks/>
- public string DoiBatchId {
- get => this._doiBatchIdField;
- set => this._doiBatchIdField = value;
- }
- /// <remarks/>
- public string Timestamp {
- get => this._timestampField;
- set => this._timestampField = value;
- }
- /// <remarks/>
- public string Registrant {
- get => this._registrantField;
- set => this._registrantField = value;
- }
- /// <remarks/>
- [System.Xml.Serialization.XmlElementAttribute("depositor")]
- public DoiBatchHeadDepositor[] Depositor {
- get => this._depositorField;
- set => this._depositorField = value;
- }
- }
- /// <remarks/>
- [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
- [System.SerializableAttribute()]
- [System.Diagnostics.DebuggerStepThroughAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://www.crossref.org/schema/4.4.2")]
- public class DoiBatchHeadDepositor {
- private string _depositorNameField;
- private string _emailAddressField;
- /// <remarks/>
- public string DepositorName {
- get => this._depositorNameField;
- set => this._depositorNameField = value;
- }
- /// <remarks/>
- public string EmailAddress {
- get => this._emailAddressField;
- set => this._emailAddressField = value;
- }
- }
- /// <remarks/>
- [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
- [System.SerializableAttribute()]
- [System.Diagnostics.DebuggerStepThroughAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://www.crossref.org/schema/4.4.2")]
- public class DoiBatchBodyJournalJournalMetadata {
- private string _fullTitleField;
- private string _abbrevTitleField;
- private DoiBatchBodyJournalJournalMetadataDoiData[] _doiDataField;
- private string _languageField;
- /// <remarks/>
- public string FullTitle {
- get => this._fullTitleField;
- set => this._fullTitleField = value;
- }
- /// <remarks/>
- public string AbbrevTitle {
- get => this._abbrevTitleField;
- set => this._abbrevTitleField = value;
- }
- /// <remarks/>
- [System.Xml.Serialization.XmlElementAttribute("doi_data")]
- public DoiBatchBodyJournalJournalMetadataDoiData[] DoiData {
- get => this._doiDataField;
- set => this._doiDataField = value;
- }
- /// <remarks/>
- [System.Xml.Serialization.XmlAttributeAttribute()]
- public string Language {
- get => this._languageField;
- set => this._languageField = value;
- }
- }
- /// <remarks/>
- [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
- [System.SerializableAttribute()]
- [System.Diagnostics.DebuggerStepThroughAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://www.crossref.org/schema/4.4.2")]
- public class DoiBatchBodyJournalJournalMetadataDoiData {
- private string _doiField;
- private string _resourceField;
- /// <remarks/>
- public string Doi {
- get => this._doiField;
- set => this._doiField = value;
- }
- /// <remarks/>
- public string Resource {
- get => this._resourceField;
- set => this._resourceField = value;
- }
- }
- /// <remarks/>
- [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
- [System.SerializableAttribute()]
- [System.Diagnostics.DebuggerStepThroughAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://www.crossref.org/schema/4.4.2")]
- [System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.crossref.org/schema/4.4.2", IsNullable=false)]
- public class NewDataSet {
- private DoiBatch[] _itemsField;
- /// <remarks/>
- [System.Xml.Serialization.XmlElementAttribute("doi_batch")]
- public DoiBatch[] Items {
- get => this._itemsField;
- set => this._itemsField = value;
- }
- }
- public class CreateXml
- {
- public DoiBatch Create(JournalPostData jPost)
- {
- // Create Batch
- DoiBatch doiBatch = new DoiBatch();
- #region Header
- // Create header for batch
- DoiBatchHead doiHead = new DoiBatchHead();
- // create depositor
- DoiBatchHeadDepositor doiDepositor = new DoiBatchHeadDepositor
- {
- DepositorName = jPost.DepositorName,
- EmailAddress = jPost.DepositorEmail
- };
- // add depositor to head.
- doiHead.Depositor = new[] {doiDepositor};
- // give it a unique guid.
- doiHead.DoiBatchId = new Guid().ToString();
- // give it a timestamp. Don't use local culture so the date settings on system do not matter.
- doiHead.Timestamp = DateTime.Now.ToOADate().ToString(CultureInfo.InvariantCulture);
- // set owner organization.
- doiHead.Registrant = jPost.DepositorName;
- #endregion
- #region Body
- // create body
- DoiBatchBodyJournalJournalMetadata doiBody = new DoiBatchBodyJournalJournalMetadata();
- DoiBatchBodyJournalJournalMetadataDoiData doiBodyData = new DoiBatchBodyJournalJournalMetadataDoiData();
- // set DOI Reference ID and journal location.
- doiBodyData.Doi = jPost.DoiPrefix + jPost.RefNum;
- doiBodyData.Resource = jPost.BaseUrl + @"?refnum=" + jPost.RefNum;
- // Fill body
- doiBody.DoiData = new[] { doiBodyData };
- doiBody.FullTitle = jPost.Title;
- doiBody.AbbrevTitle = jPost.Title.Substring(0, 10); //truncate title.
- doiBody.Language = "EN";
- // Fill batch
- doiBatch.Head = new [] { doiHead };
- doiBatch.Body = new[] { new[]{ new []{doiBody}}};
- return doiBatch;
- #endregion
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment