下面我有我从Web服务接收到的XML。我在C#中使用XML真的很新,但我试图仅在<data_text>
元素来自<form_id>
。我想通过遍历所有的XML来写入SQL发送的内容。有没有简单的方法来设置这个,所以我可以找到<data_text>
说从一个特定的<field_number>
并分配给一个字符串,然后使用该字符串写入SQL?一旦我可以将所有东西都写入字符串,我可以轻松地写入SQL,但是我无法将XML读入字符串。我也愿意接受其他选择。在最底层,我拥有目前C#的位置,就我而言,目前为止。在C中读取多个XML元素并写入SQL#
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE pnet_message_history_packet_response PUBLIC>
<pnet_message_history_packet_response>
<packet_id>2</packet_id>
<imessage>
<vehicle_number>Test1</vehicle_number>
<created_datetime>02/20/2017 19:33:28</created_datetime>
<received_datetime>02/20/2017 19:33:53</received_datetime>
<recipient>
<recip_uid>1234</recip_uid>
<recip_name>TestRecip</recip_name>
</recipient>
<msn>1233</msn>
<base_msn>1234</base_msn>
<message_type>form</message_type>
<formdata>
<form_id>55555</form_id>
<im_field>
<field_number>5</field_number>
<empty_at_start>no</empty_at_start>
<driver_modified>no</driver_modified>
<data>
<data_text>Test5</data_text>
</data>
</im_field>
<im_field>
<field_number>6</field_number>
<empty_at_start>yes</empty_at_start>
<driver_modified>yes</driver_modified>
<data>
<data_text>Test6</data_text>
</data>
</im_field>
<im_field>
<field_number>7</field_number>
<empty_at_start>yes</empty_at_start>
<driver_modified>yes</driver_modified>
<data>
<data_text>Test7</data_text>
</data>
</im_field>
<im_field>
<field_number>8</field_number>
<empty_at_start>yes</empty_at_start>
<driver_modified>yes</driver_modified>
<data>
<data_date-time>09/09/09 09:09:00</data_date-time>
</data>
</im_field>
<im_field>
<field_number>9</field_number>
<empty_at_start>yes</empty_at_start>
<driver_modified>yes</driver_modified>
<data>
<data_date-time>09/09/09 09:09:00</data_date-time>
</data>
</im_field>
<im_field>
<field_number>10</field_number>
<empty_at_start>no</empty_at_start>
<driver_modified>no</driver_modified>
<data>
<data_text>Test10</data_text>
</data>
</im_field>
</formdata>
</imessage>
<imessage>
<vehicle_number>Test1</vehicle_number>
<created_datetime>02/20/2017 19:34:04</created_datetime>
<received_datetime>02/20/2017 19:34:19</received_datetime>
<recipient>
<recip_uid>1234</recip_uid>
<recip_name>TestRecip</recip_name>
</recipient>
<msn>1235</msn>
<base_msn>1236</base_msn>
<message_type>form</message_type>
<formdata>
<form_id>55555</form_id>
<im_field>
<field_number>5</field_number>
<empty_at_start>no</empty_at_start>
<driver_modified>no</driver_modified>
<data>
<data_text>Test52</data_text>
</data>
</im_field>
<im_field>
<field_number>6</field_number>
<empty_at_start>yes</empty_at_start>
<driver_modified>yes</driver_modified>
<data>
<data_text>Test62</data_text>
</data>
</im_field>
<im_field>
<field_number>7</field_number>
<empty_at_start>yes</empty_at_start>
<driver_modified>yes</driver_modified>
<data>
<data_text>Test72</data_text>
</data>
</im_field>
<im_field>
<field_number>8</field_number>
<empty_at_start>yes</empty_at_start>
<driver_modified>yes</driver_modified>
<data>
<data_date-time>09/08/09 09:08:00</data_date-time>
</data>
</im_field>
<im_field>
<field_number>9</field_number>
<empty_at_start>yes</empty_at_start>
<driver_modified>yes</driver_modified>
<data>
<data_date-time>09/08/09 08:09:00</data_date-time>
</data>
</im_field>
<im_field>
<field_number>10</field_number>
<empty_at_start>no</empty_at_start>
<driver_modified>no</driver_modified>
<data>
<data_text>Test102</data_text>
</data>
</im_field>
</formdata>
</imessage>
</pnet_message_history_packet_response>
一些C#-code
protected void GetMessages()
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.PreserveWhitespace = false;
Regex regex = new Regex(@"^\s+$[\r\n]*");
String cleanedXml = regex.Replace(postXMLData(URL, prefix, "POST"), "><").TrimStart();
xmldoc.LoadXml(cleanedXml);
XmlNodeList messageList = xmldoc.GetElementsByTagName("imessage");
foreach (XmlNode node in messageList)
{
XmlElement messageElement = (XmlElement)node;
String Arrival;
Arrival = messageElement.GetElementsByTagName("data_text")[0].InnerText;
testTxtBx.Text += Arrival; //I am just trying to write to a Textbox now to see the results.
}
}
请exaplin你需要什么,你的问题是不明确你要分析这个XML在C#或你想在SQL中解析? –
嗨,你的编辑带走了我的......在你的文字中,所有'都是隐形的。你必须把它们包装起来。否则,这个问题是完全不清楚的...... –
Shnugo
编辑问题时,请务必小心,否则您将无法撤消之前的有益修改。 – Amy