如何从 xml 类型提供程序引用第一个节点
How to reference the first node from the xml type provider
我似乎无法 select 仅 xml 类型提供商的第一个地址邮政编码。
下面的片段是来自更大的 XML 文档的片段:
<applicant>
<address>
<buildingno>8</buildingno>
<street1>Bob Way</street1>
<locality>Jones</locality>
<posttown>Somewhere</posttown>
<postcode>AB12 3QE</postcode>
</address>
<address>
<buildingno>9</buildingno>
<street1>SomeStreet</street1>
<posttown>Somewhere</posttown>
<postcode>AB13 4FE</postcode>
</address>
</applicant>
我已经在类型提供程序中加载了文档:
type XmlReqSample = XmlProvider<"C:\Temp\requests\samples.xml", SampleIsList=true, Global=true>
有些请求只有一个地址,有些有两个或更多,这就是我尝试加载样本的原因。我想知道如何 select 只有第一个地址邮编:
// 'file' is a string of XML data
let doc = XmlReqSample.Parse(file)
let postCode = doc.Body.Applicant.Address.Value.Postcode.Value
但是,我不能 select 只有第一个邮政编码。
如何 select 第一个地址,尤其是邮政编码?
#r "packages/FSharp.Data.2.2.3/lib/portable-net40+sl5+wp8+win8/FSharp.Data.dll"
#r "System.Xml.Linq"
open FSharp.Data
type XmlReqSample = XmlProvider<"sample.xml">
// file is a string of XML data
let applicant = XmlReqSample.Load(file)
let firstAddress =
applicant.Addresses
|> Array.tryFind (fun _ -> true)
val firstAddess : Address option
此外,要从地址获取邮政编码,您可以定义一个小函数:
let getPostCode address =
address |> Option.bind (fun (t:XmlReqSample.Address) -> Some t.Postcode)
并像这样使用:
getPostCode firstAddress
val it : string option = Some "AB12 3QE"
我似乎无法 select 仅 xml 类型提供商的第一个地址邮政编码。
下面的片段是来自更大的 XML 文档的片段:
<applicant>
<address>
<buildingno>8</buildingno>
<street1>Bob Way</street1>
<locality>Jones</locality>
<posttown>Somewhere</posttown>
<postcode>AB12 3QE</postcode>
</address>
<address>
<buildingno>9</buildingno>
<street1>SomeStreet</street1>
<posttown>Somewhere</posttown>
<postcode>AB13 4FE</postcode>
</address>
</applicant>
我已经在类型提供程序中加载了文档:
type XmlReqSample = XmlProvider<"C:\Temp\requests\samples.xml", SampleIsList=true, Global=true>
有些请求只有一个地址,有些有两个或更多,这就是我尝试加载样本的原因。我想知道如何 select 只有第一个地址邮编:
// 'file' is a string of XML data
let doc = XmlReqSample.Parse(file)
let postCode = doc.Body.Applicant.Address.Value.Postcode.Value
但是,我不能 select 只有第一个邮政编码。
如何 select 第一个地址,尤其是邮政编码?
#r "packages/FSharp.Data.2.2.3/lib/portable-net40+sl5+wp8+win8/FSharp.Data.dll"
#r "System.Xml.Linq"
open FSharp.Data
type XmlReqSample = XmlProvider<"sample.xml">
// file is a string of XML data
let applicant = XmlReqSample.Load(file)
let firstAddress =
applicant.Addresses
|> Array.tryFind (fun _ -> true)
val firstAddess : Address option
此外,要从地址获取邮政编码,您可以定义一个小函数:
let getPostCode address =
address |> Option.bind (fun (t:XmlReqSample.Address) -> Some t.Postcode)
并像这样使用:
getPostCode firstAddress
val it : string option = Some "AB12 3QE"