【发布时间】:2010-12-20 00:29:45
【问题描述】:
我正在使用第 3 方 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
只要我从元素名称中删除冒号,它就可以正常工作。对于冒号,只有冒号的右侧位于元素名称中。我知道冒号是一个禁忌,但我无法控制 3rd 方 api 所指示的内容。
我有哪些解决方法?是否有任何有用的方法可以将冒号强制输入元素名称?我不必使用XMLDocument,但不确定还有什么其他方法可以让我到达那里。
更新:我意识到<ns1: 指的是一个命名空间。是的,有 2 个。在写出 XML 时,如果我说,我可以让它工作 -
XmlDocument.CreateElement("ns1:E", "http://schema");
然而,这个的 XML 输出是
<ns1:E xmlns:ns1="http://schema">
如果我只是说XmlDocument.CreateElement("ns1:E"); 没有uri,那么输出就是<E>。我不希望输出具有架构引用,但我确实需要具有前缀。我想要达到的结果就是<ns1:E>。两个命名空间都在顶部声明,我认为这意味着我必须在每个节点上声明它们。
【问题讨论】:
标签: .net xml namespaces linq-to-xml