从XML文件中获取没有标记的行的内容

时间:2012-06-03 12:51:08

标签: xml f#

我的程序有一个xml文件作为输入,我想只取一行的内容,不带xml标签。 例如:

<string> xxx </string>

我怎样才能获得“xxx”?

3 个答案:

答案 0 :(得分:7)

正如评论中所提到的,你不应该使用正则表达式来解析XML,因为.NET有更好的库来做到这一点。下面是使用从LINQ到XML的XDocument类型的示例:

// Reference assemblies for LINQ to XML
#r "System.Xml.dll"
#r "System.Xml.Linq.dll"

open System.Xml.Linq

// Create document with your XML data
let doc = XDocument.Parse("<string> xxx </string>")
let el name = XName.Get(name)
// Get element named 'string' and pick its value
doc.Element(el "string").Value

答案 1 :(得分:1)

#r "System.Xml.Linq.dll"

open System
open System.Linq
open System.Xml.Linq

let toXName s = XName.Get s

let xml = XDocument.Load @"data.xml"
let getElements elName = xml.Root.Descendants(toXName elName)

let main() = 
  (getElements "string").First().Value
  |> printfn "%s"
//  getElements "string" |> Seq.iter (fun x -> printfn "%s" x.Value)

do main()

答案 2 :(得分:0)

如果你没有使用嵌套标签,你可以使用下面的内容(只需要获得第一组):

<.*?>([^<]*)<.*?>

但是如果你真的在你的xml中使用嵌套标签,你只能通过正则表达式来获取值,它需要一个堆栈或某种类型的List才能这样做。