如何在使用命名空间时使用 C# 处理特定的 XML 元素

本文关键字:元素 处理 XML 命名空间 | 更新日期: 2023-09-27 18:34:23

我必须通过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

使用上面的语法时,我只得到一个元素,使用 loop/Linq 我得到两个值,但不知道哪个是哪个。尽管命名空间,是否有一个选项可以通过唯一的 XPath 来寻址元素?

问候

延斯

如何在使用命名空间时使用 C# 处理特定的 XML 元素

发现它:)我必须引用XPath的每个"步骤":ORDER_ID = doc。SelectSingleNode("//openTrans:ORDER_INFO/openTrans:ORDER _ID", nsmgr).内部文本;VIND_ORDER_ID = COR。SelectSingleNode("//openTrans:CUSTOMER_ORDER_REFERENCE/o penTrans:ORDER_ID", nsmgr).内文本