创建Azure Function实现HTML表格转JSON时的问题排查
排查Azure Function中HTML表格转JSON的服务器错误原因
核心语法错误
你的代码里对象初始化时缺少逗号,这是导致编译失败、触发服务器错误的直接原因:
在TableData对象初始化块中,PmComp = values[1].InnerText末尾未添加逗号,C#语法解析失败,进而引发服务器端运行错误。
修正后的代码
#r "Newtonsoft.Json" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using System.Collections.Generic; using Newtonsoft.Json; using System.Xml; public class TableData { public string PmRep { get; set; } public string PmComp { get; set; } public string PmAddr { get; set; } } public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { var outputTable = new List<TableData>(); string requestBody = String.Empty; using (StreamReader streamReader = new StreamReader(req.Body)) { requestBody = await streamReader.ReadToEndAsync(); } dynamic data = JsonConvert.DeserializeObject(requestBody); string xmlString = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String((string)data?.Content)); var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); var xmlRows = xmlDocument.DocumentElement.SelectNodes("//tr"); foreach (XmlNode xmlRow in xmlRows) { var values = xmlRow.SelectNodes(".//td"); // 确保当前行有3个<td>元素,避免索引越界 if (values.Count == 3) { var row = new TableData() { PmRep = values[0].InnerText.Trim(), PmComp = values[1].InnerText.Trim(), PmAddr = values[2].InnerText.Trim() }; outputTable.Add(row); } } return new OkObjectResult(outputTable); }
额外优化说明
- 新增
values.Count == 3判断,避免遇到列数不足的行时触发索引越界异常 - 对
InnerText调用Trim(),清理表格内容中可能存在的多余空格、换行符 - 移除了
xmlString行末尾多余的分号
内容的提问来源于stack exchange,提问作者DryBSMT
相关产品推荐
相关产品推荐

