我的程序有一个xml文件作为输入,我只想取某一行的内容,没有xml标签。例如:
<string> xxx </string>
我怎样才能只得到“xxx”?
正如评论中提到的,您不应该使用正则表达式来解析 XML,因为 .NET 有更好的库可以做到这一点。下面是一个使用XDocument
LINQ 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
#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()
如果您不使用嵌套标签,则可以使用以下内容(只需要获取第一组):
<.*?>([^<]*)<.*?>
但是如果你真的在你的 xml 中使用嵌套标签,你不能只通过正则表达式来获取值,它需要一个堆栈或某种列表来这样做。