2012-03-29 3 views
0

HIは、XMLでビルドされたXMLDocument私は以下のようなXMLを構築し、文字列に変換する必要があり

値が動的に変化します。

どのような提案ですか?

<?xml version='1.0' encoding='utf-8'?> 
<Message release='001' version='008' xmlns='http://www.ncpdp.org/schema/SCRIPT'> 
    <Header> 
    <To Qualifier='ZZZ'>xxxxxxx</To> 
    <From Qualifier='ZZZ'>xxxxxxx</From> 
    <MessageID>xxxxxx</MessageID> 
    <SentTime>2002-09-30T08:15:22</SentTime> 
    <Security> 
     <UsernameToken> 
     <Username/> 
     </UsernameToken> 
     <Sender> 
     <SecondaryIdentification>xxxxxxxxx</SecondaryIdentification> 
     </Sender> 
     <Receiver> 
     <SecondaryIdentification>xxxxxxxxxxx</SecondaryIdentification> 
     </Receiver> 
    </Security> 
    <TestMessage>1</TestMessage> 
    </Header> 
    <Body> 
    <RxHistoryRequest> 
     <RxReferenceNumber>POCDH1</RxReferenceNumber> 
     <Prescriber> 
     <Identification> 
      <NPI>xxxxxxx</NPI> 
      <DEANumber>xxxxxxxx</DEANumber> 
     </Identification> 
     <Name> 
      <LastName>JONES</LastName> 
      <FirstName>MARK</FirstName> 
     </Name> 
     <PhoneNumbers> 
      <Phone> 
      <Number>6152219800</Number> 
      <Qualifier>TE</Qualifier> 
      </Phone> 
     </PhoneNumbers> 
     </Prescriber> 
     <Patient> 
     <PatientRelationship>1</PatientRelationship> 
     <Name> 
      <LastName>PALTROW</LastName> 
      <FirstName>BRUCE</FirstName> 
      <MiddleName>K</MiddleName> 
     </Name> 
     <Gender>M</Gender> 
     <DateOfBirth>1954-12-25</DateOfBirth> 
     </Patient> 
     <BenefitsCoordination> 
     <PayerIdentification> 
      <PayerID>PBM123</PayerID> 
     </PayerIdentification> 
     <PayerName>INSURANCE COMPANY NAME</PayerName> 
     <CardholderID>MEMBERID</CardholderID> 
     <CardholderName>PALTROW, BRUCE</CardholderName> 
     <GroupID>B000000</GroupID> 
     <Consent>Y</Consent> 
     <PBMMemberID>B000000%111111110%001</PBMMemberID> 
     </BenefitsCoordination> 
    </RxHistoryRequest> 
    </Body> 
</Message> 

私はこの

はシリアライズクラス

[Serializable] 
    [XmlRoot("Message", Namespace = "http://www.domain.com/messaging")] 
    public class RxHistoryRequest 
    { 
     [XmlAttribute] 
     public string version = string.Empty; 
     [XmlAttribute] 
     public string release = string.Empty; 
     [XmlAttribute("schemaLocation", Namespace = XmlSchema.InstanceNamespace)] 
     public string xsiSchemaLocation = ConfigurationManager.AppSettings["Namespace"] + " " + 
              ConfigurationManager.AppSettings["SS_DirectorySchema"]; 
     public Header Header = new Header(); 
     public RxHistory Body = new RxHistory(); 
    } 
//rest of the Properties in the classes 

を作成し、私は必要があるとして、私の方法

RxHistoryRequest RxHReq = new RxHistoryRequest(); 
     RxHReq.version = "008"; //ConfigurationManager.AppSettings["SSversion"]; 
     RxHReq.release = "001"; //ConfigurationManager.AppSettings["SSrelease"]; 
//declare values to the rest of the Properties 
//then 


MemoryStream memoryStream = new MemoryStream(); 
      XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); 
      XmlSerializer xs = new XmlSerializer(typeof(RxHistoryRequest)); 
      xs.Serialize(xmlTextWriter, RxHReq); 
      XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); 
      ns.Add("messaging","http://www.ncpdp.org/schema/SCRIPT"); 
      //ConfigurationManager.AppSettings["SurescriptsNamespace"] 


      memoryStream = (MemoryStream)xmlTextWriter.BaseStream; 

      ASCIIEncoding encoding = new ASCIIEncoding(); 
      byte[] data = memoryStream.ToArray(); 

にいくつかの場所、それが右回転しているようなものを試してみました。

+0

あなたはどれくらい持っていますか? –

+0

.NETでXMLデータを生成および操作するための組み込みクラスが多数あり、ドキュメントはかなり広範で直観的です。どの部分が正確に問題を抱えていますか? – mellamokb

+0

@JonSkeetステータスが – HaBo

答えて

0

まあ、@JonSkeetの提案私はLinq-to-XML に私のアイデアを逆転させてくれました。

linq-to-XMLの作業に興味がある人は、 ここに私のコードがあります。

XNamespace ns = "http://www.ncpdp.org/schema/SCRIPT"; 
     XElement xml = new XElement(ns + "Message", 
      new XAttribute("release", "001"), 
      new XAttribute("version", "008"), 
      new XElement(ns + "Header", 
       new XElement(ns + "To", 
        new XAttribute("Qualifier", "ZZZ"), "xxxxxxxxxx"), 
       new XElement(ns + "From", 
        new XAttribute("Qualifier", "ZZZ"), "xxxxxxxxxxxx"), 
        new XElement(ns + "MessageID", CommonController.GetIntegerGUID().ToString()), 
        new XElement(ns + "SentTime", "2002-09-30T08:15:22"), 
        new XElement(ns + "Security", 
         new XElement(ns + "UsernameToken", 
          new XElement(ns + "Username", "")), 
          new XElement(ns + "Sender", 
           new XElement(ns + "SecondaryIdentification", "PASSWORD")), 
           new XElement(ns + "Receiver", 
            new XElement(ns + "SecondaryIdentification", "RXHUB")) 
         ), 
         new XElement(ns + "TestMessage", "1") 
         ), 
         new XElement(ns + "Body", 
          new XElement(ns + "RxHistoryRequest", 
           new XElement(ns + "RxReferenceNumber", "POCDH1"), 

// it goes on like that 

これは一部のユーザーにとって便利です。

関連する問題