0

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

<string> xxx </string>

我怎样才能只得到“xxx”?

4

3 回答 3

7

正如评论中提到的,您不应该使用正则表达式来解析 XML,因为 .NET 有更好的库可以做到这一点。下面是一个使用XDocumentLINQ to XML 类型的示例:

// 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
于 2012-06-03T13:03:00.593 回答
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()
于 2012-06-03T14:34:05.910 回答
0

如果您不使用嵌套标签,则可以使用以下内容(只需要获取第一组):

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

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

于 2012-06-03T13:01:30.353 回答