簡體   English   中英

使用XML數據並使用C#asp.net插入sql服務器

[英]Take XML data and insert into sql server use c# asp.net

現在,我正在嘗試提供一些服務,使我可以讀取xml文件並將其解析到sql服務器中,我已經閱讀並看到了許多教程,如何使用c#將xml解析為sql服務器,但是仍然無法獲取數據。

<?xml version="1.0" encoding="utf-8" ?>
<Source 1 - Subject 17>
    SubjectType: Faces
    FaceConfidence: 100
    <appeared at 02/08/2018 5:28:43 PM> 
        FrameIndex: 1033
        Rectangle: at (210;169), width=63, height=84
    </appeared at 02/08/2018 5:28:43 PM>
    <track at 02/08/2018 5:28:44 PM> 
        FrameIndex: 1050
        Rectangle: at (210;134), width=70, height=94
        <Details available on frame 1050> 
            FrameIndex: 1050
            Status: Ok
            Eyes at: (260; 169) and (229; 169)
            Rectangle: at (210;134), width=70, height=94
        </Details available on frame 1050>
    </track at 02/08/2018 5:28:44 PM>
    <disappeared at 02/08/2018 5:28:46 PM> 
        TimeStamp: 02/08/2018 5:28:46 PM
        <Top 1000 of Best Matches> 
        no matches found
        </Top 1000 of Best Matches>
        Contains successfully generated template
    </disappeared at 02/08/2018 5:28:46 PM>
</Source 1 - Subject 17>

這是xml文件格式,這是我的嘗試:

protected void Button1_Click(object sender, EventArgs e)
{
    string cs = @"Data Source=172.16.6.39;Initial Catalog=FC_SCAN;Persist Security Info=True;User ID=fc_adm;Password=P@ssw0rd";
    SqlConnection con = new SqlConnection(cs);

    XmlDocument doc = new XmlDocument();
    doc.Load("test.xml");

    var source = doc.DocumentElement.SelectNodes("Source").Cast<XmlElement>().ToList();

    var appeared = source[0].GetAttribute("Appeared");
    var disappeared = source[0].GetAttribute("Disappeared");
    var top = source[0].GetAttribute("Top");

    SqlCommand cmd;
    SqlDataAdapter da = new SqlDataAdapter();
    string sql = null;
    con.Open();
    sql = "Insert into Source values ('" + source + "','" + appeared + "','" + disappeared + "','"+top+"')";
    cmd = new SqlCommand(sql, con);
    da.InsertCommand = cmd;
    da.InsertCommand.ExecuteNonQuery();
    con.Close();
}

錯誤控制台始終顯示在xml文件中,我非常感謝任何幫助,技巧或提示。

啟動代碼時,我立即在

 doc.Load("test.xml");

線。 異常消息非常清楚:

An unhandled exception of type 'System.Xml.XmlException' occurred in System.Xml.dll
Additional information: Name cannot begin with the '1' character, hexadecimal value 0x31. Line 2, position 9.

顯然,它不喜歡名稱為“ Source 1-Subject 17”,“出現在02/08/2018 5:28:43 PM”等的XML標簽。

更新:

您不能使用.Net XML操縱的東西,因為您的文件不是XML(它聲稱是帶有標頭的XML,但有點像是在說謊)。 如果仍然需要將此文件的內容放入數據庫,則必須編寫一個自定義解析例程以讀取該自定義數據格式,或者,如果可能的話,請與為您生成“ XML”的人員聯系並說服他們將其數據格式更改為真實的XML。 如果您在同一組織等中工作,這可能是最簡單的方法。

您的xml太糟糕了。 我在下面固定了它:

<?xml version="1.0" encoding="utf-8" ?>
<Source>
  <SubjectType>Faces</SubjectType>
  <FaceConfidence>100</FaceConfidence>
  <appeared>
    02/08/2018 5:28:43 PM>
    <FrameIndex>1033</FrameIndex>
    <Rectangle top="210" left="169" width="63" height="84"/>
  </appeared>
  <track>
    02/08/2018 5:28:44 PM>
    <FrameIndex>1050</FrameIndex>
    <Rectangle top="210" left="134" width="70" height="94"/>
    <Details>
      <FrameIndex>1050</FrameIndex>
      <Status>Ok</Status>
      <Eyes>
        <location x="260" y="169"/>
        <location x="229" y="169"/>
      </Eyes>
      <Rectangle top="210" left="134" width="70" height="94"/>
    </Details>
  </track>
  <disappeared>
    <TimeStamp>02/08/2018 5:28:46 PM</TimeStamp>
    <Top_1000> no matches found</Top_1000>
  </disappeared>
</Source>

關於jdweng答案,我不是100% 支持 ,但是他的想法告訴我實際上應該有多個根元素。 所以我的想法是,每個來源都有自己的來源和主題ID。

    <?xml version="1.0" encoding="utf-8" ?>
<Source>
<Source id="1">
<Subject id="17">
  <SubjectType>Faces</SubjectType>
  <FaceConfidence>100</FaceConfidence>
  <appeared>
    02/08/2018 5:28:43 PM
    <FrameIndex>1033</FrameIndex>
    <Rectangle top="210" left="169" width="63" height="84"/>
  </appeared>
  <track>
    02/08/2018 5:28:44 PM
    <FrameIndex>1050</FrameIndex>
    <Rectangle top="210" left="134" width="70" height="94"/>
    <Details>
      <FrameIndex>1050</FrameIndex>
      <Status>Ok</Status>
      <Eyes>
        <location x="260" y="169"/>
        <location x="229" y="169"/>
      </Eyes>
      <Rectangle top="210" left="134" width="70" height="94"/>
    </Details>
  </track>
  <disappeared>
    <TimeStamp>02/08/2018 5:28:46 PM</TimeStamp>
    <Top_1000> no matches found</Top_1000>
  </disappeared>
</Subject>
</Source>

<Source id="2">
<Subject id="18">
  <SubjectType>Faces</SubjectType>
  <FaceConfidence>101</FaceConfidence>
  <appeared>
    02/08/2018 6:28:43 PM
    <FrameIndex>1034</FrameIndex>
    <Rectangle top="210" left="169" width="63" height="84"/>
  </appeared>
  <track>
    02/08/2018 6:28:44 PM
    <FrameIndex>1051</FrameIndex>
    <Rectangle top="210" left="134" width="70" height="94"/>
    <Details>
      <FrameIndex>1051</FrameIndex>
      <Status>Ok</Status>
      <Eyes>
        <location x="260" y="169"/>
        <location x="229" y="169"/>
      </Eyes>
      <Rectangle top="210" left="134" width="70" height="94"/>
    </Details>
  </track>
  <disappeared>
    <TimeStamp>02/08/2018 6:28:46 PM</TimeStamp>
    <Top_1000> no matches found</Top_1000>
  </disappeared>
  </Subject>
  </Source>
</Source>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM