c# – 我可以从我要阅读的xml文件中创建一个XmlNamespaceManager对象吗?

我在sharepoint上运行了一些c#代码,用于检查infopath文档的xml内部以查看是否应该检查文档或丢弃文档.

代码适用于我创建的几个不同的表单模板,但是在我的备用表单模板上失败了.
我发现我正在创建的XmlNamespaceManager包含“MY”namepsace的错误diff deFinition.

我会试着解释一下

我有这个代码来decalre我的XmlNamespaceManager

NaMetable nt = new NaMetable();
NamespaceManager = new XmlNamespaceManager(nt);

// Add prefix/namespace pairs to the XmlNamespaceManager.
NamespaceManager.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
NamespaceManager.AddNamespace("xhtml", "http://www.w3.org/1999/xhtml");
NamespaceManager.AddNamespace("dfs", "http://schemas.microsoft.com/office/infopath/2003/dataFormSolution");            
NamespaceManager.AddNamespace("my", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2010-07-14T13:45:59");
NamespaceManager.AddNamespace("xd", "http://schemas.microsoft.com/office/infopath/2003");`

然后我可以使用以下代码行来搜索我之后的xml

XPathNavigator nav = xml.CreateNavigator().SelectSingleNode("//my:HasSaved", NamespaceManager);

nav.Value然后得到我想要的数据.

这一切都适用于我的几个表单模板.我有一个新的表单模板,并发现我需要使用该行代替

NamespaceManager.AddNamespace("my", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2010-11-30T17:39:37");

日期不同.

我的问题是我不能添加两次,因为只有一组表格可以工作.

所以我的问题是.有没有办法可以从XML文件生成NamespaceManager对象,因为这些都包含在标题中?
我一直无法找到一个简单的方法.

解决方法:

我找到了一种方法.它可以从XmlDocument对象中提取,而不是添加“my”命名空间.这可能只是运气,它以这种方式工作,但我很高兴.

NamespaceManager.AddNamespace("my", formXml.DocumentElement.NamespaceURI

formXML是从infopath XML创建的XmlDocument

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念