.net オブジェクトに変換したい Web サービスから次の xml を取得します。
let xmlString = "<?xml version=\"1.0\"?>
<logInResponse>
<result>OK</result>
<xmlLogIn>
<session>11C0ED6F8F7288855FC73C99979A9732.TOGKE6VP9aE8abcdLXaVXg</session>
<user>WallStreetScumbag1</user>
<authorizations>
<insiderTrading>true</insiderTrading>
</authorizations>
</xmlLogIn>
</logInResponse>"
これは私がこれまでに持っているものです:
type Result(value:XmlNode) =
member this.Value = value.InnerText
let (|Node|Result|) (node : #System.Xml.XmlNode) =
if node.Name = "result" then
Result (new Result(node))
else
Node (seq {for x in node.ChildNodes -> x})
let extract node =
let rec extract node =
match node with
| Result(p) ->
Seq.singleton p
| Node(nodes) ->
Seq.collect (fun (n) -> extract n) nodes
extract node
let xmlDoc = new XmlDocument()
xmlDoc.LoadXml(xmlString)
//type LogIn() =
//This is where I would create a .net object that mirrors the xml.
ご覧のとおり、いくつかの要素は異なる要素内で繰り返されており、サンプル xml で確認できるように、要素にすべての要素が含まれていない場合があります。この同じ Web サービスは、他のタイプの応答でもこれらの同じ要素の多くを再利用します。アクティブなパターンを使用して、取得した xml をオブジェクトに逆シリアル化する一般的な方法を作成することはできますか? この Web サービスは、属性を使用して情報を送信することはないようです。すべてが要素内の要素であるため、この問題が容易になる可能性があります。私がこれを間違った方法で行っている場合は、お気軽にもっと良い方法を提案してください。
前もって感謝します、
ボブ