У меня есть некоторый код c #, работающий на sharepoint, который я использую для проверки внутри xml документа infopath, чтобы узнать, должен ли я проверить документ или отказаться от документа.
Код работает нормально для парыразличных шаблонов форм, которые я создал, но у меня не получилось.Я обнаружил, что создаваемый мною 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");
Дата отличается.
Моя проблема в том, что я не могу добавить это дважды как только 1 комплектформ будет работать.
Так что мой вопрос.Есть ли способ, которым я могу сгенерировать объект NamespaceManager из файла XML, поскольку все это содержится в заголовке?Я не смог найти простой способ обойти это.