2014-04-03 2 views
0

이 상황이 있습니다. 우리 회사는 내가 다른 소스에서 얻은 XML 파일의 데이터를 읽고 삽입하는이 앱을 만들고 싶어한다. 나는 mlns의 = "꺼내하지 않는데이터베이스에 데이터를 삽입하는 데 C#/XML 문제가 발생했습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<queryConfirmation xmlns="http://www.npdb-hipdb.hrsa.gov/QueryResponseCommon"> 
<submitter xmlns=""> 
    <entityDBID>800000000000001</entityDBID> 
    <vendorID>1111514</vendorID> 
</submitter> 
<submissionFilename xmlns="">test.xml</submissionFilename> 
<certification xmlns=""> 
    <name>JOE SMITH</name> 
    <title>SUPERVISOR</title> 
    <phone> 
     <number>4075556647</number> 
    </phone> 
    <date>2008-02-26</date> 
</certification> 
<batchStatus xmlns=""> 
    <dcn>2000000000388120</dcn> 
    <processDate>2014-04-03</processDate> 
    <successfullyProcessed>false</successfullyProcessed> 
    <error> 
     <code>09</code> 
     <message>09: This entity does not have the privilege to perform this transaction.</message> 
    </error> 
</batchStatus> 
</queryConfirmation> 

내가 내 현재 코드를 사용하여 데이터베이스에 데이터를 삽입 할 수 없습니다"와에 xmlns = "HTTP : I가 붙어 부분은 내가 XML 파일을받을 때입니다 : //www.npdb-hipdb.hrsa.gov/QueryResponseCommon "을 XML 파일에서 수동으로 가져옵니다. 나는 파일에서이 정보를 가지고 같은 느낌 잘못하지만 다음은 내 코드입니다 :

private void insertResponseXml() 
    { 

     OpenFileDialog ofd = new OpenFileDialog(); 
     ofd.Filter = "XML|*.xml"; 
     if (ofd.ShowDialog() == DialogResult.OK) 
     { 
      XmlDocument doc = new XmlDocument(); 
      doc.Load(ofd.FileName); 




      XmlElement xelRoot = doc.DocumentElement; 
      XmlNodeList rootNodes = xelRoot.SelectNodes("/queryConfirmation"); 
      XmlNodeList submitterNodes = xelRoot.SelectNodes("/queryConfirmation/submitter"); 
      XmlNodeList certNode = xelRoot.SelectNodes("/queryConfirmation/certification"); 
      XmlNodeList certPhoneNode = xelRoot.SelectNodes("/queryConfirmation/certification/phone"); 
      XmlNodeList batchNodeList = xelRoot.SelectNodes("/queryConfirmation/batchStatus"); 
      XmlNodeList bsErrorList = xelRoot.SelectNodes("/queryConfirmation/batchStatus/error"); 





       foreach (XmlNode xndNode in submitterNodes) 
       { 
        entityDBID = xndNode["entityDBID"].InnerText; 
        vendorID = xndNode["vendorID"].InnerText; 

        foreach (XmlNode submisFilenameNode in rootNodes) 
        { 
         submissionFilename = submisFilenameNode["submissionFilename"].InnerText; 

        } 

        foreach (XmlNode cfn in certNode) 
        { 
         name = cfn["name"].InnerText; 
         title = cfn["title"].InnerText; 
         certificationDate = cfn["date"].InnerText; 
        } 

        foreach (XmlNode cfnp in certPhoneNode) 
        { 
         phoneNumber = cfnp["number"].InnerText; 

         if (cfnp["extension"] == null) 
         { 
          phoneExtension = "null"; 
         } 
         else 
         { 
          phoneExtension = cfnp["extension"].InnerText; 
         } 
        } 

        foreach (XmlNode bsNode in batchNodeList) 
        { 
         dcn = bsNode["dcn"].InnerText; 
         processDate = bsNode["processDate"].InnerText; 
         successfullyProcessed = bsNode["successfullyProcessed"].InnerText; 
        } 

        foreach (XmlNode bsError in bsErrorList) 
        { 
         if (bsError["code"] == null) 
         { 
          code = "null"; 
         } 
         else 
         { 
          code = bsError["code"].InnerText; 
         } 

         if (bsError["message"] == null) 
         { 
          message = "null"; 
         } 
         else 
         { 
          message = bsError["message"].InnerText; 
         } 

        } 
        try 
        { 
         DA.InsertCommand = new SqlCommand("INSERT INTO response VALUES (@entityDBID, @vendorID, @submissionFilename, @fullName, @title, @number, @extension, @certificationDate, @dcn, @processDate, @successfullyProcessed, @code, @message);", DRDB); 
         DA.InsertCommand.Parameters.AddWithValue("@entityDBID", SqlDbType.NVarChar).Value = entityDBID; 
         DA.InsertCommand.Parameters.AddWithValue("@vendorID", SqlDbType.NVarChar).Value = vendorID; 
         DA.InsertCommand.Parameters.AddWithValue("@submissionFilename", SqlDbType.NVarChar).Value = submissionFilename; 
         DA.InsertCommand.Parameters.AddWithValue("@fullName", SqlDbType.NVarChar).Value = name; 
         DA.InsertCommand.Parameters.AddWithValue("@title", SqlDbType.NVarChar).Value = title; 
         DA.InsertCommand.Parameters.AddWithValue("@number", SqlDbType.NVarChar).Value = phoneNumber; 
         DA.InsertCommand.Parameters.AddWithValue("@extension", SqlDbType.NVarChar).Value = phoneExtension; 
         DA.InsertCommand.Parameters.AddWithValue("@certificationDate", SqlDbType.NVarChar).Value = certificationDate; 
         DA.InsertCommand.Parameters.AddWithValue("@dcn", SqlDbType.NVarChar).Value = dcn; 
         DA.InsertCommand.Parameters.AddWithValue("@processDate", SqlDbType.NVarChar).Value = processDate; 
         DA.InsertCommand.Parameters.AddWithValue("@successfullyProcessed", SqlDbType.NVarChar).Value = successfullyProcessed; 
         DA.InsertCommand.Parameters.AddWithValue("@code", SqlDbType.NVarChar).Value = code; 
         DA.InsertCommand.Parameters.AddWithValue("@message", SqlDbType.NVarChar).Value = message; 

         DRDB.Open(); 
         DA.InsertCommand.ExecuteNonQuery(); 
         DRDB.Close(); 
        } 
        catch (Exception ex) 
        { 
         MessageBox.Show(ex.Message); 
        } 

       } 


     } 
    } 

이 또한 내가 비주얼 스튜디오 2005 (C# 2.5)를 사용하고 문제를 악화시킬 수 있습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

0

난 그냥 코드를 변경

private void readAndInsertXmlFile() 
    { 
     OpenFileDialog openFile = new OpenFileDialog(); 
     openFile.Filter = "XML|*.xml"; 
     if (openFile.ShowDialog() == DialogResult.OK) 
      { 

      using (XmlTextReader reader = new XmlTextReader(openFile.FileName)) 
      { 
       while (reader.Read()) 
       { 
        if (reader.IsStartElement()) 
        { 
         switch (reader.Name) 
         { 
          case "entityDBID": 


            qc.submitter.entityDBID = reader.ReadString(); 


           break; 
          case "vendorID": 

            qc.submitter.vendorID = reader.ReadString(); 


           break; 
          case "submissionFilename": 

            qc.submissionFilename.SubmissionFilename = reader.ReadString(); 


           break; 
          case "name": 

            qc.certification.name = reader.ReadString(); 


           break; 
          case "title": 

            qc.certification.title = reader.ReadString(); 


           break; 
          case "number": 

            qc.certification.phone.number = reader.ReadString(); 


           break; 
          case "extension": 


            qc.certification.phone.extension = reader.ReadString(); 



           break; 
          case "date": 

            qc.certification.date = reader.ReadString(); 


           break; 
          case "dcn": 

            qc.batchStatus.dcn = reader.ReadString(); 


           break; 
          case "processDate": 

            qc.batchStatus.processDate = reader.ReadString(); 


           break; 
          case "successfullyProcessed": 

            qc.batchStatus.successfullyProcessed = reader.ReadString(); 


           break; 
          case "code": 

            qc.error.Code = reader.ReadString(); 


           break; 
          case "message": 

            qc.error.Message = reader.ReadString(); 


           break; 



         } 


        } 

       } 
       DA.InsertCommand = new SqlCommand("INSERT INTO response VALUES (@entityDBID, @vendorID, @submissionFilename, @fullName, @title, @number, @extension, @certificationDate, @dcn, @processDate, @successfullyProcessed, @code, @message);", DRDB); 
       if (qc.submitter.entityDBID == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@entityDBID", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@entityDBID", SqlDbType.NVarChar).Value = qc.submitter.entityDBID; 
       } 

       if (qc.submitter.vendorID == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@vendorID", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@vendorID", SqlDbType.NVarChar).Value = qc.submitter.vendorID; 
       } 

       if (qc.submissionFilename.SubmissionFilename == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@submissionFilename", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@submissionFilename", SqlDbType.NVarChar).Value = qc.submissionFilename.SubmissionFilename; 
       } 

       if (qc.certification.name == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@fullName", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@fullName", SqlDbType.NVarChar).Value = qc.certification.name; 
       } 

       if (qc.certification.title == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@title", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@title", SqlDbType.NVarChar).Value = qc.certification.title; 
       } 

       if (qc.certification.phone.number == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@number", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@number", SqlDbType.NVarChar).Value = qc.certification.phone.number; 
       } 

       if (qc.certification.phone.extension == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@extension", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@extension", SqlDbType.NVarChar).Value = qc.certification.phone.extension; 
       } 


       if (qc.certification.date == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@certificationDate", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@certificationDate", SqlDbType.NVarChar).Value = qc.certification.date; 
       } 

       if (qc.batchStatus.dcn == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@dcn", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@dcn", SqlDbType.NVarChar).Value = qc.batchStatus.dcn; 
       } 

       if (qc.batchStatus.processDate == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@processDate", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@processDate", SqlDbType.NVarChar).Value = qc.batchStatus.processDate; 
       } 

       if (qc.batchStatus.successfullyProcessed == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@successfullyProcessed", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@successfullyProcessed", SqlDbType.NVarChar).Value = qc.batchStatus.successfullyProcessed; 
       } 

       if (qc.error.Code == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@code", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@code", SqlDbType.NVarChar).Value = qc.error.Code; 
       } 

       if (qc.error.Message == null) 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@message", SqlDbType.NVarChar).Value = "NULL"; 
       } 
       else 
       { 
        DA.InsertCommand.Parameters.AddWithValue("@message", SqlDbType.NVarChar).Value = qc.error.Message; 
       } 

       DRDB.Open(); 
       DA.InsertCommand.ExecuteNonQuery(); 
       DRDB.Close(); 
      } 

     } 
    } 
관련 문제