2012-03-29 14 views
0

HALLO Ich brauche ein XML wie unten erstellen und in einen StringBuild XMLDocument in C#. NET

konvertieren

Werte im XML wird dynamisch ändern.

irgendein Vorschlag?

<?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> 

Ich habe versucht, so etwas wie dieses

Erstellen Serializable Klassen

[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 

Und in meiner Methode

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(); 

Einige wo es rechts dreht, wie ich brauche.

+0

Und wie weit hast du? –

+0

Es gibt viele integrierte Klassen zum Generieren und Bearbeiten von XML-Daten mit .NET, und die Dokumentation ist ziemlich umfangreich und intuitiv. Mit welchem ​​Teil genau hast du Probleme? – mellamokb

+0

@JonSkeet Bitte sehen Sie die aktualisierte Frage mit dem Status – HaBo

Antwort

0

Gut mit @JonSkeet Vorschlag schlug ich meine Idee zu Linq-to-XML , die meine Arbeit ziemlich einfach gemacht hat.

Wenn jemand daran interessiert wäre, an Linq-to-XML zu arbeiten, ist hier mein Code.

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 

Hoffe, dass dies für einige nützlich sein wird.

Verwandte Themen