我的程序有一个xml文件作为输入,我想只取一行的内容,不带xml标签。 例如:
<string> xxx </string>
我怎样才能获得“xxx”?
答案 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才能这样做。