我有一个URL,在访问时输出XML,我想将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中的新行,然后记录每个元素的值,即使没有数据。
答案 0 :(得分:0)
我相信你的debugTextBox1行需要读取el.Key而不是el.Name。
否则,您可以尝试:
foreach (var el in xdoc.Elements())
{
debugTextBox1.Text = string.Format("Key={0},value={1}", el.Attributes["key"].Value.ToString(), el.Attributes["value"].Value.ToString());
}
此问题类似于How to read key/value in xml file,其答案可能会有所帮助。