gpt4 book ai didi

c# - 我可以从我将要读取的 xml 文件创建一个 XmlNamespaceManager 对象吗?

转载 作者:数据小太阳 更新时间:2023-10-29 02:05:42 26 4
gpt4 key购买 nike

我有一些在 sharepoint 上运行的 C# 代码,我用它来检查 infopath 文档的 xml 内部,看看我是否应该检查文档或丢弃文档。

代码在我创建的几个不同的表单模板上运行良好,但在我最新的表单模板上运行失败。我发现我正在创建的 XmlNamespaceManager 包含错误的“MY”命名空间。

我会尽力解释

我有这段代码来标记我的 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 对象中提取,而不是添加“我的” namespace 。以这种方式工作可能只是有点运气,但我对此很满意。

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

formXML 是从信息路径 XML 创建的 XmlDocument

关于c# - 我可以从我将要读取的 xml 文件创建一个 XmlNamespaceManager 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4659119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com