我有一個URL在訪問時輸出XML,我想將該XML讀爲流(我認爲)並循環遍歷元素對數據執行某些操作,但是我得到奇怪的結果。C#無法循環瀏覽XML流中的元素
我迄今代碼:
private void getFaxFinderLogs()
{
WebRequest request = WebRequest.Create("https://faxfinder/ffws/v1/inbound_log");
request.Credentials = new NetworkCredential(ffusername_tb.Text, ffpassword_tb.Text);
using (WebResponse response = request.GetResponse())
using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
{
var xdoc = XDocument.Load(reader);
foreach (var el in xdoc.Elements())
{
debugTextBox1.Text = string.Format("Key={0},value={1}", el.Name, el.Value);
}
}
}
而且從上述URL的XML產生此結構:
<?xml version="1.0" encoding="UTF-8" ?>
<response>
<message>Success</message>
<inbound_fax_entry>
<filename>fax_inbound_20170313_133831_recv0943.pdf</filename>
<status>complete</status>
<complete_time>2017-03-13T17:38:31</complete_time>
<remote_id>5551239999</remote_id>
<pages>2</pages>
<extension>3555</extension>
<recipient_name>Customer Service</recipient_name>
<channel>8</channel>
<delivered_to>
<type>Share</type>
<destination>//fileserver/share/fax_inbound_20170313_133831_recv0943.pdf</destination>
</delivered_to>
<delivered_to>
<type>Print</type>
<destination>LOCAL DESTINATION</destination>
</delivered_to>
<location />
<caller_name>NAME OF THE CALLER</caller_name>
<caller_number>5551239999</caller_number>
</inbound_fax_entry>
<inbound_fax_entry>
...
</inbound_fax_entry>
</response>
上面提到的代碼產生在debugTextBox1控制以下輸出:
Key=response,value=
Success
fax_inbound_20170313_133831_recv0943.pdf
complete
2017-03-15T13:31:06
5551239999
12
3555
Customer Service
...
我可以看到它只是識別第一個鍵response
,然後剝離所有其他鍵並顯示值。老實說,我不需要關鍵名稱,我的最終目標是做一些簡單的分析(統計我們收到的傳真數量,識別錯誤等),然後將數據轉換爲可輸出的CSV。如果我可以讓它枚舉每個inbound_fax_entry
密鑰對之間的所有內容,我可以輕鬆地將數據像我想要的那樣截斷。
任何建議,將不勝感激。
編輯我在想它,我確實需要鍵名和它們的相應值;並非每個傳真都有每個XML元素填充,所以我需要查找inbound_fax_entry
以在我的csv中劃定一條新行,然後記錄每個元素的值,即使沒有數據。