Linnworks宏读取XML报<SalesDataOrderInterface xmlns=''>未预期错误求助
错误对应代码行
报错触发自你代码中的这一行:
string date = xmlDoc.SelectSingleNode("//ns1:Fax",nsmgr).InnerText;
问题原因
你对XML命名空间的使用完全错误:
- 你XML根节点上定义的
xmlns:xsd="http://www.w3.org/2001/XMLSchema"、xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"是XML schema专用的命名空间别名,仅用于属性定义,这类实际业务节点不属于任何命名空间 - 你给XPath查询的Fax节点绑定了xsd的命名空间前缀
ns1,查询时找不到匹配节点,就触发了“未预期的节点”的结构匹配错误
修复方案
直接删除命名空间相关的冗余代码,直接查询无命名空间的Fax节点即可,同时补充空节点判断避免空引用报错:
把你原代码中XML解析的段落
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable); nsmgr.AddNamespace("ns1", "http://www.w3.org/2001/XMLSchema"); nsmgr.AddNamespace("ns2", "http://www.w3.org/2001/XMLSchema-instance"); xmlDoc.LoadXml(xml); string date = xmlDoc.SelectSingleNode("//ns1:Fax",nsmgr).InnerText;
替换为:
xmlDoc.LoadXml(xml); XmlNode faxNode = xmlDoc.SelectSingleNode("//Fax"); if (faxNode == null) { Logger.WriteError($"No Fax node found for order {orderDetail.NumOrderId}"); continue; } string date = faxNode.InnerText.Trim();
修改后即可正常提取Fax节点的日期值。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

