F# 转换顺序<;记录类型>;到xml?
记录类型F# 转换顺序<;记录类型>;到xml?,f#,f#-3.0,F#,F# 3.0,记录类型 type ARecordType = { Aaa: string; Bbb: string; Id: int; Ccc: string } 如何将其转换为Xml字符串 let recordTypeToXml (recordType: seq<ARecordType>) = ..... 让recordTypeToXml(recordType:seq)= ..... 返回 。。。。。。。。。。。 或 。。。。 或者它是可以处理任何记录类型的通用函数吗?您可以使
type ARecordType = { Aaa: string; Bbb: string; Id: int; Ccc: string }
如何将其转换为Xml字符串
let recordTypeToXml (recordType: seq<ARecordType>) =
.....
让recordTypeToXml(recordType:seq)=
.....
返回
。。。。。。。。。。。
或
。。。。
或者它是可以处理任何记录类型的通用函数吗?您可以使用
CLIMutableAttribute
对记录进行修饰,以允许XmlSerializer
对其进行处理。此外,我不确定是否序列化seq,但我已将其用于数组
open System.Xml.Serialization
open System.IO
[<CLIMutable>]
type ARecordType = { Aaa: string; Bbb: string; Id: int; Ccc: string }
let recordTypeToXml (recordType: ARecordType []) =
let xmlSer = XmlSerializer(typeof<ARecordType []>)
use ms = new MemoryStream()
xmlSer.Serialize(ms, Array.ofSeq recordType)
ms.Seek(0L, SeekOrigin.Begin) |> ignore
use sr = new StreamReader(ms)
sr.ReadToEnd()
open System.Xml.Serialization
开放系统
[]
类型ARecordType={Aaa:string;Bbb:string;Id:int;Ccc:string}
让recordTypeToXml(recordType:AreRecordType[])=
设xmlSer=XmlSerializer(typeof)
使用ms=newmemoryStream()
序列化(ms,Array.ofSeq记录类型)
ms.Seek(0升,SeekOrigin.Begin)|>忽略
使用sr=新的StreamReader(毫秒)
高级ReadToEnd()
您可以使用CLIMutableAttribute
来装饰记录,以允许XmlSerializer
处理该记录。此外,我不确定是否序列化seq,但我已将其用于数组
open System.Xml.Serialization
open System.IO
[<CLIMutable>]
type ARecordType = { Aaa: string; Bbb: string; Id: int; Ccc: string }
let recordTypeToXml (recordType: ARecordType []) =
let xmlSer = XmlSerializer(typeof<ARecordType []>)
use ms = new MemoryStream()
xmlSer.Serialize(ms, Array.ofSeq recordType)
ms.Seek(0L, SeekOrigin.Begin) |> ignore
use sr = new StreamReader(ms)
sr.ReadToEnd()
open System.Xml.Serialization
开放系统
[]
类型ARecordType={Aaa:string;Bbb:string;Id:int;Ccc:string}
让recordTypeToXml(recordType:AreRecordType[])=
设xmlSer=XmlSerializer(typeof)
使用ms=newmemoryStream()
序列化(ms,Array.ofSeq记录类型)
ms.Seek(0升,SeekOrigin.Begin)|>忽略
使用sr=新的StreamReader(毫秒)
高级ReadToEnd()
您可以使用CLIMutableAttribute
来装饰记录,以允许XmlSerializer
处理该记录。此外,我不确定是否序列化seq,但我已将其用于数组
open System.Xml.Serialization
open System.IO
[<CLIMutable>]
type ARecordType = { Aaa: string; Bbb: string; Id: int; Ccc: string }
let recordTypeToXml (recordType: ARecordType []) =
let xmlSer = XmlSerializer(typeof<ARecordType []>)
use ms = new MemoryStream()
xmlSer.Serialize(ms, Array.ofSeq recordType)
ms.Seek(0L, SeekOrigin.Begin) |> ignore
use sr = new StreamReader(ms)
sr.ReadToEnd()
open System.Xml.Serialization
开放系统
[]
类型ARecordType={Aaa:string;Bbb:string;Id:int;Ccc:string}
让recordTypeToXml(recordType:AreRecordType[])=
设xmlSer=XmlSerializer(typeof)
使用ms=newmemoryStream()
序列化(ms,Array.ofSeq记录类型)
ms.Seek(0升,SeekOrigin.Begin)|>忽略
使用sr=新的StreamReader(毫秒)
高级ReadToEnd()
您可以使用CLIMutableAttribute
来装饰记录,以允许XmlSerializer
处理该记录。此外,我不确定是否序列化seq,但我已将其用于数组
open System.Xml.Serialization
open System.IO
[<CLIMutable>]
type ARecordType = { Aaa: string; Bbb: string; Id: int; Ccc: string }
let recordTypeToXml (recordType: ARecordType []) =
let xmlSer = XmlSerializer(typeof<ARecordType []>)
use ms = new MemoryStream()
xmlSer.Serialize(ms, Array.ofSeq recordType)
ms.Seek(0L, SeekOrigin.Begin) |> ignore
use sr = new StreamReader(ms)
sr.ReadToEnd()
open System.Xml.Serialization
开放系统
[]
类型ARecordType={Aaa:string;Bbb:string;Id:int;Ccc:string}
让recordTypeToXml(recordType:AreRecordType[])=
设xmlSer=XmlSerializer(typeof)
使用ms=newmemoryStream()
序列化(ms,Array.ofSeq记录类型)
ms.Seek(0升,SeekOrigin.Begin)|>忽略
使用sr=新的StreamReader(毫秒)
高级ReadToEnd()
使用Linq到Xml非常简单:
let recordTypeToXml (recordType: seq<ARecordType>) =
XElement(XName.Get "Root",
recordType |> Seq.map (fun {Aaa=a; Bbb=b; Ccc=c} ->
XElement(XName.Get "Row",
XAttribute(XName.Get "Aaa", a),
XAttribute(XName.Get "Bbb", b),
XAttribute(XName.Get "Ccc", c))))
让recordTypeToXml(recordType:seq)=
XElement(XName.Get“Root”,
记录类型|>Seq.map(fun{Aaa=a;Bbb=b;Ccc=c}->
XElement(XName.Get“行”,
XAttribute(XName.Get“Aaa”,a),
XAttribute(XName.Get“Bbb”,b),
XAttribute(XName.Get“Ccc”,c)))
您可以通过使用运算符或函数包装一些方法调用来将其缩短一点。例如,使用以下两个辅助函数:
let Element name (content: seq<_>) = XElement(XName.Get name, content)
let Attr name value = XAttribute(XName.Get name, value)
let元素名称(内容:seq)=XElement(XName.Get名称,内容)
让Attr name value=XAttribute(XName.Get name,value)
它干净多了:
let recordTypeToXml (recordType: seq<ARecordType>) =
Element "Root"
[ for {Aaa=a; Bbb=b; Ccc=c} in recordType ->
Element "Row"
[ Attr "Aaa" a
Attr "Bbb" b
Attr "Ccc" c ] ]
让recordTypeToXml(recordType:seq)=
元素“根”
[对于recordType中的{Aaa=a;Bbb=b;Ccc=c}而言->
元素“行”
[属性“Aaa”a
属性“Bbb”b
属性“Ccc”c]]
使用Linq到Xml非常简单:
let recordTypeToXml (recordType: seq<ARecordType>) =
XElement(XName.Get "Root",
recordType |> Seq.map (fun {Aaa=a; Bbb=b; Ccc=c} ->
XElement(XName.Get "Row",
XAttribute(XName.Get "Aaa", a),
XAttribute(XName.Get "Bbb", b),
XAttribute(XName.Get "Ccc", c))))
让recordTypeToXml(recordType:seq)=
XElement(XName.Get“Root”,
记录类型|>Seq.map(fun{Aaa=a;Bbb=b;Ccc=c}->
XElement(XName.Get“行”,
XAttribute(XName.Get“Aaa”,a),
XAttribute(XName.Get“Bbb”,b),
XAttribute(XName.Get“Ccc”,c)))
您可以通过使用运算符或函数包装一些方法调用来将其缩短一点。例如,使用以下两个辅助函数:
let Element name (content: seq<_>) = XElement(XName.Get name, content)
let Attr name value = XAttribute(XName.Get name, value)
let元素名称(内容:seq)=XElement(XName.Get名称,内容)
让Attr name value=XAttribute(XName.Get name,value)
它干净多了:
let recordTypeToXml (recordType: seq<ARecordType>) =
Element "Root"
[ for {Aaa=a; Bbb=b; Ccc=c} in recordType ->
Element "Row"
[ Attr "Aaa" a
Attr "Bbb" b
Attr "Ccc" c ] ]
让recordTypeToXml(recordType:seq)=
元素“根”
[对于recordType中的{Aaa=a;Bbb=b;Ccc=c}而言->
元素“行”
[属性“Aaa”a
属性“Bbb”b
属性“Ccc”c]]
使用Linq到Xml非常简单:
let recordTypeToXml (recordType: seq<ARecordType>) =
XElement(XName.Get "Root",
recordType |> Seq.map (fun {Aaa=a; Bbb=b; Ccc=c} ->
XElement(XName.Get "Row",
XAttribute(XName.Get "Aaa", a),
XAttribute(XName.Get "Bbb", b),
XAttribute(XName.Get "Ccc", c))))
让recordTypeToXml(recordType:seq)=
XElement(XName.Get“Root”,
记录类型|>Seq.map(fun{Aaa=a;Bbb=b;Ccc=c}->
XElement(XName.Get“行”,
XAttribute(XName.Get“Aaa”,a),
XAttribute(XName.Get“Bbb”,b),
XAttribute(XName.Get“Ccc”,c)))
您可以通过使用运算符或函数包装一些方法调用来将其缩短一点。例如,使用以下两个辅助函数:
let Element name (content: seq<_>) = XElement(XName.Get name, content)
let Attr name value = XAttribute(XName.Get name, value)
let元素名称(内容:seq)=XElement(XName.Get名称,内容)
让Attr name value=XAttribute(XName.Get name,value)
它干净多了:
let recordTypeToXml (recordType: seq<ARecordType>) =
Element "Root"
[ for {Aaa=a; Bbb=b; Ccc=c} in recordType ->
Element "Row"
[ Attr "Aaa" a
Attr "Bbb" b
Attr "Ccc" c ] ]
让recordTypeToXml(recordType:seq)=
元素“根”
[对于recordType中的{Aaa=a;Bbb=b;Ccc=c}而言->
元素“行”
[属性“Aaa”a
属性“Bbb”b
属性“Ccc”c]]
使用Linq到Xml非常简单:
let recordTypeToXml (recordType: seq<ARecordType>) =
XElement(XName.Get "Root",
recordType |> Seq.map (fun {Aaa=a; Bbb=b; Ccc=c} ->
XElement(XName.Get "Row",
XAttribute(XName.Get "Aaa", a),
XAttribute(XName.Get "Bbb", b),
XAttribute(XName.Get "Ccc", c))))
让recordTypeToXml(recordType:seq)=
XElement(XName.Get“Root”,
记录类型|>Seq.map(fun{Aaa=a;Bbb=b;Ccc=c}->
XElement(XName.Get“行”,
XAttribute(XName.Get“Aaa”,a),
XAttribute(XName.Get“Bbb”,b),
XAttribute(XName.Get“Ccc”,c)))
您可以通过使用运算符或函数包装一些方法调用来将其缩短一点。例如,使用以下两个辅助函数:
let Element name (content: seq<_>) = XElement(XName.Get name, content)
let Attr name value = XAttribute(XName.Get name, value)
let元素名称(内容:seq)=XElement(XName.Get名称,内容)
让Attr name value=XAttribute(XName.Get name,value)
它干净多了:
let recordTypeToXml (recordType: seq<ARecordType>) =
Element "Root"
[ for {Aaa=a; Bbb=b; Ccc=c} in recordType ->
Element "Row"
[ Attr "Aaa" a
Attr "Bbb" b
Attr "Ccc" c ] ]
let