나는 내가 .NET 객체로 변환 할 웹 서비스에서 다음 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에서 볼 수있는 모든 요소를 포함하지 않는 경우가 있습니다. 이 동일한 웹 서비스는 다른 유형의 응답에서도 이러한 동일한 요소를 재사용합니다. 액티브 패턴을 사용하여 개체로 다시 변환하는 XML을 deserialize하는 일반적인 방법을 만드는 것이 가능합니까? 이 웹 서비스는 속성을 사용하여 정보를 보내지 않으며,이 요소는 요소 내부의 요소로 보이므로이 문제를 쉽게 처리 할 수 있습니다. 잘못된 방향으로 가고 싶다면 더 나은 것을 제안하십시오. 사전에
감사합니다,
감사합니다,이 내 문제의 일부를 해결할 수 있지만 다른 부분은. NET 개체를 얻는 가장 좋은 방법입니다. 이 xml을 LogInResponse 형식으로 변환하는 가장 좋은 방법은 무엇입니까? 다른 요소에 동일한 요소가 포함되어있을 때 코드를 다시 사용할 수 있도록 요소 내의 요소를 처리하는 가장 좋은 방법은 확실하지 않습니다. 상황을 단순화하기 위해 xml 문자열에서 accounts 요소를 제거했습니다. – Beaker
드디어 내 xml에서 도메인 객체를 가져 오려고 포기했습니다. 당신이 내 질문에 적어도 부분적으로 대답했기 때문에 대답을 표시하고 있습니다. – Beaker
BTW, 내 문제를 해결하는 방법에 대해 궁금한 사람은 Linq to XML을 사용하여 도메인 개체를 가져옵니다. – Beaker