我必须通过C#将XML文档导入SQL-DB。 XML有几个名称空间。
我尝试通过XPath解决我想要导入的特定元素,但由于命名空间而导致其中断。而不是
XmlDocument doc = new XmlDocument();
doc = XDocument.Load(Filename);
GENERATOR_INFO = doc.SelectSingleNode("ORDER/ORDER_HEADER/ORDER_INFO/GENERATOR_INFO").InnerText;
我写的是这样的:
XmlDocument doc = new XmlDocument();
doc = XDocument.Load(Filename);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("openTrans", "http://www.opentrans.org/XMLSchema/2.1");
GENERATOR_INFO = doc.SelectSingleNode("//openTrans:GENERATOR_INFO", nsmgr).InnerText;
因此缩短了我需要的值的“路径”。
我的问题是:如何直接处理元素?在XMl中有两个名为“ORDER_ID”的元素:
ORDER/ORDER_HEADER/ORDER_INFO/ORDER_ID
和
ORDER/ORDER_HEADER/CUSTOMER_ORDER_REFERENCE/ORDER_INFO
当使用上面的语法时,我只得到一个元素,有一个循环/ Linq我得到两个值,但不知道,哪一个是哪个。 是否有一个选项可以通过唯一的XPath解决元素,尽管有命名空间?
问候
延
答案 0 :(得分:0)
发现它:) 我必须参考每一步"步骤" XPath:ORDER_ID = doc.SelectSingleNode(" // openTrans:ORDER_INFO / openTrans:ORDER _ID",nsmgr).InnerText; RESP。 VIND_ORDER_ID = COR.SelectSingleNode(" // openTrans:CUSTOMER_ORDER_REFERENCE / o penTrans:ORDER_ID",nsmgr).InnerText