c# - 通过 ajax 将 XML 属性与 Elements 一起发送到 C# 控制器方法并解析以保存
问题描述
通常要在网页上编辑的 XML 元素作为输入名称发送过来示例:
然后在 C# 控制器方法中:
List<string> keys = Request.Form.Keys.Cast<string>().Where(item => item[0] == '/' && item[1] == '/').ToList();
foreach (var key in keys)
{
var item = xDoc.SelectSingleNode(key, manager);
if (item != null)
item.InnerText = Request.Form[key];
else
throw new InvalidOperationException("Could not decode parameter with key " + key + " and value " + Request.Form[key]);
}
通常 XML 元素在 Key Collection 的 Request.Form 部分中发送,因此 1 个关键示例是:
"//IVS-NONINST-REC/IVS-NONINST-REC-REST[1]/IVS-SEC-DIAG-CDS[1]/IVS-SEC-DIAG-T[1]"
但是,我需要发送一些属性来解析和保存这些属性。我不确定如何“正确”发送它们,如果我发送属性,比如
"//IVS-NONINST-REC/IVS-NONINST-REC-REST[1]/IVS-SEC-DIAG-CDS[1]/IVS-SEC-DIAG-T[1]/IVS-SEC-DIAG"
代码循环遇到 throw new InvalidOperationException。
- 如何正确发送属性?
- 如何正确解析 C# 中的属性以保存它们?
该元素及其属性的 XML 如下所示
<IVS-SEC-DIAG-T IVS-SEC-DIAG="C56.9" IVS-SEC-POA="">test</IVS-SEC-DIAG-T>
更新,完整的xml(为了简洁删除了一些)
<IVS-NONINST-REC xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<IVS-NONINST-REC-KEY IVS-REC-TYP="2" IVS-TM-STAMP="210549" IVS-ADJ-KEY="5">
</IVS-NONINST-REC-KEY>
<IVS-NONINST-REC-REST IVS-PAT-ID="333089302">
<IVS-SEC-DIAG-CDS>
<IVS-SEC-DIAG-T IVS-SEC-DIAG="C56.9" IVS-SEC-POA="">test</IVS-SEC-DIAG-T>
</IVS-NONINST-REC-REST>
</IVS-NONINST-REC>
虽然我可以在 xDoc InnerHTML 中看到所有 xml 元素和属性,但 xDoc 认为没有属性 这是一个屏幕截图
解决方案
您应该添加@
到 xpath 中的属性名称。
//.../IVS-SEC-DIAG-T[1]/@IVS-SEC-DIAG
推荐阅读
- c++ - 如何在 C++ Rapid JSON C++ 中访问负浮点值
- python - python how to deal with variables in nested py exec()
- c++ - C++ STL 中是否有等价的 Polyval(Matlab 的函数)?
- javascript - 更新数组中对象的值
- php - 在laravel contorller的sql查询中将日期时间字段转换为日期
- java - 求和列 SQLite Android 并在 TextView 上显示
- bash - Bash:引用数组中的字符串
- javascript - 如何在基于 Gliderjs 的非基于像素的幻灯片上移动滑块 | Javascript
- excel - 我正在尝试将“.txt 文件”从另一个工作簿导入工作簿,但我有一些错误
- python - Python Pandas:如何将我的表格从长格式转换为宽格式(具体示例如下)?