我正在使用一个第三方的xml api。他们定义了一个类似于以下结构的必需的xml结构。
<ns1:E xmlns:ns1="schema">
<ns1:B>
<ns2:S>
<ns2:V>
<ns2:Bl />
</ns2:V>
</ns2:S>
</ns1:B>
</ns1:E>
我有一个SQL表格,里面包含需要转换成XML格式的信息。我使用 LINQ to SQL 适配器来获取数据,并且使用 System.Xml
创建XML文档。
XmlDocument.CreateElement("ns1:E"); etc
如果我从元素名称中删除冒号,这个方法就可以正常工作。有了冒号,只有冒号右侧的内容才是元素名称。我知道冒号是不允许的,但我无法控制第三方API的规定。
有什么办法可以解决这个问题吗?是否有一些有用的方法可以强制把冒号放入元素名称中?我不一定非要使用XMLDocument
,但不确定还有什么其他方法可以达到目的。
更新:我意识到<ns1:
是指命名空间,而且有两个。在编写XML时,如果这样说,我可以让它正常工作 -
XmlDocument.CreateElement("ns1:E", "http://schema");
然而,这个的XML输出结果是
<ns1:E xmlns:ns1="http://schema">
如果我只是这样说: XmlDocument.CreateElement("ns1:E");
没有uri,那么输出结果只是<E>
。我不想让输出结果有模式引用,但我确实需要前缀。我想要实现的结果就是简单的<ns1:E>
。这两个命名空间都在顶部声明,我认为这意味着我必须在每个节点上声明它们。