我试图在运行时向我的Web.config文件添加一个新的dependentAssembly。到目前为止,我的当前代码已经
XmlNamespaceManager manager = new XmlNamespaceManager (WebConfigDoc.NameTable);
manager.AddNamespace("bindings", "urn:schemas-microsoft-com:asm.v1");
XmlNode root = WebConfigDoc.DocumentElement;
XmlNode assemblyBinding = root.SelectSingleNode("//bindings:assemblyBinding", manager);
XmlNode newAssemblyBinding = WebConfigDoc.ImportNode(GetElement(MyNewNode()), true);
assemblyBinding.AppendChild(newAssemblyBinding);
}
private string MyNewNode()
{
string Node = "<dependentAssembly>" +
"<assemblyIdentity name=\"newone\" "+
" publicKeyToken=\"608967\" />" +
"<bindingRedirect oldVersion=\"1\" newwVersion=\"2\" />" +
"</dependentAssembly>";
return Node ;
}这是可行的,但是结果节点是这样的
<dependentAssembly xmlns="">
<assemblyIdentity name="newone" publicKeyToken="608967" />
<bindingRedirect oldVersion="1" newVersion="2" />
</dependentAssembly>我不需要追加xmlns=""属性。
有没有更好的方法来做这件事?
谢谢。
发布于 2010-12-24 00:56:04
我不确定为什么它不能工作可能是XML序列化程序。名称空间是正确的,因为XmlNode assemblyBinding对象不是空的,并且我指定的代码就是我正在做的事情,仅此而已。这可能是因为GetElement方法,它从一个字符串创建XmlNode并返回一个新的文档元素。
private static XmlElement GetElement(string xml)
{
//convert string to xml element
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
return doc.DocumentElement;
}无论如何,我已经使用XPathNavigator实现了这个结果。我的最终版本。
XmlNamespaceManager manager = new XmlNamespaceManager (WebConfigDoc.NameTable);
manager.AddNamespace("bindings", "urn:schemas-microsoft-com:asm.v1");
XmlNode root = WebConfigDoc.DocumentElement;
XPathNavigator assemblyBinding = root.CreateNavigator().
SelectSingleNode("//bindings:assemblyBinding", manager);
assemblyBinding.AppendChild(MyNewNode());
private string MyNewNode()
{
string Node = "<dependentAssembly>" +
"<assemblyIdentity name=\"newone\" "+
" publicKeyToken=\"608967\" />" +
"<bindingRedirect oldVersion=\"1\" newwVersion=\"2\" />" +
"</dependentAssembly>";
return Node ;
}谢谢你的帮助。
发布于 2010-12-23 03:14:47
问题是因为您要添加的新节点位于"no namespace“中,而父节点位于"urn:schemas-microsoft-com:asm.v1”名称空间中。
解决方案
更改
string Node = "<dependentAssembly>" + 到
string Node = "<dependentAssembly xmlns='urn:schemas-microsoft-com:asm.v1'>" + https://stackoverflow.com/questions/4512259
复制相似问题