从XML中提取InvDetailRequestHeader的invDate与invID属性值
提取XML节点属性的解决方案
核心思路
要提取节点上的属性值,不能用SelectSingleNode("属性名")(这是用来查找子节点的语法),正确做法是先定位到目标节点,再通过Attributes集合获取对应属性的Value值。
具体实现代码
针对你的XML结构,直接定位到InvDetailRequestHeader节点后提取属性:
XmlDocument doc = context.Data.ToXmlDocument(); // 定位到InvDetailRequestHeader节点 XmlNode headerNode = doc.SelectSingleNode("//InvDetailRequestHeader"); if (headerNode != null) { // 提取invDate属性值 string invDate = headerNode.Attributes["invDate"]?.Value; // 提取invID属性值 string invID = headerNode.Attributes["invID"]?.Value; // 在这里将值赋值到你需要的变量或位置即可 // 示例:targetVariable = invID; }
补充说明
//InvDetailRequestHeader是XPath表达式,会在整个XML文档中查找所有匹配的节点;如果确定文档中只有一个该节点,用SelectSingleNode即可,若有多个则改用SelectNodes循环处理。- 代码中的
?.运算符是为了避免属性不存在时触发空引用异常,如果你能确保目标属性一定存在,可以直接使用headerNode.Attributes["invID"].Value。
内容的提问来源于stack exchange,提问作者Phantom
相关产品推荐
相关产品推荐

