Element document = doc.addElement("document")
document.addNamespace("bbs","http://yourdnsname/") // 可以多次调用添加其他ns
呵呵,正好我前段时间研究了这个问题。先说说原因:
在xml文件有多个命名空间时,你的xml各种类型中的元素在没有确切指明其命名空间的情况下,它的命名空间就是默认命名空间(一般问xml文档根节点中指定命名空间的第一个属性)。当你添加节点时,若没有指明该节点的命名空间时,不会使用默认命名空间的,会添加:xmls=“”,作为默认命名空间。
所以,解决的方式当然就是在添加节点时就指明其命名空间就是咯。
命名空间使用方法:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(new XmlDocument().NameTable) //声明一个命名空间管理器
nsmgr.AddNamespace(“ns”, xmlUrl)//向管理器添加一个命名空间连接,其中ns为添加命名空间的名称,xmlUrl为命名空间的链接。两个参数都是string类型。
jobNode.SelectSingleNode("ns:trigger/ns:cron", nsmgr)//使用命名空间查找节点。注意其中的ns和nsmgr
其实对于你的问题只需要在创建要加入的节点时指明一个xmlUrl就可以啦:
XmlElement jobElement = xmlDoc.CreateElement("job", xmlUrl)
secyingXML 命名空间(XML Namespaces)介绍以及节点读取方法
XML 命名空间提供避免元素命名冲突的方法。
命名冲突
在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。
这个 XML 文档携带着某个表格中的信息:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
这个 XML 文档携带有关桌子的信息(一件家具):
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)