我知道http://msdn.microsoft.com/en-us/library/bb387069.aspx。我已阅读示例文章。但是在 F# 中,String 到 XName 的转换存在一些问题。我尝试使用的一些代码:
let ( !! ) : string -> XName = XName.op_Implicit
> XElement(!!"tmp:" + !!"root", !!"Content");;
stdin(9,21): error FS0001: The type 'XName' does not support any operators named '+'
> XElement(!!("tmp:" + "root"), !!"Content");;
System.Xml.XmlException: The ':' character, hexadecimal value 0x3A, cannot be included in a name.
> XElement("tmp" + "root", "Content");;
The type 'string' is not compatible with the type 'XName'
我想要的是:
<tmp:root>Content</tmp:root>
UPD:我只想要标签之前的前缀命名空间,就像这样:
<tmp:root>Content</tmp:root>
没有这样的:
> let ns = XNamespace.Get "http://tmp.com/";;
val ns : XNamespace = http://tmp.com/
> let xe = XElement(ns + "root", "Content");;
val xe : XElement = <root xmlns="http://tmp.com/">Content</root>