我正在尝试根据以下XML使用F#为C#构建动态类型/类构建器
<config target="string">
<protocol>string</protocol>
<about_path>string</about_path>
<about_content>
<name_path>string</name_path>
<id_path>string</id_path>
<version_path>string</version_path>
</about_content>
</config>
使用下面的代码,我可以很好地解析示例
module XmlParser =
open FSharp.Data
open System.Globalization
open FSharp.Data.Runtime.BaseTypes
open System.Xml.Linq
[<Literal>]
let targetSchema = "<config target=\"string\">
<protocol>string</protocol>
<about_path>string</about_path>
<about_content>
<name_path>string</name_path>
<id_path>string</id_path>
<version_path>string</version_path>
</about_content>
</config>"
type Configuration = XmlProvider<targetSchema>
现在的问题是,我无法集中精力获取about_content
标记的内部部分。
使用解析实际xml后
let parsedValue = Configuration.Parse(xmlIn)
我试图绕过F#中的递归处理,但被困在看起来像这样的非工作代码中(e
为parsedValue.XElement
)
let rec flatten ( e : System.Xml.Linq.XElement) (out:List<string>) =
if e.HasElements
then for inner in e.Elements -> flatten(inner)
else e.Name.LocalName
作为递归的结果,我需要提示如何将e.Name.LocalName
值收集到序列/列表中。我也可以忍受最后有XElement
个列表。