0

私のプログラムには入力としてxmlファイルがあり、xmlタグを使用せずに、特定の行のコンテンツのみを取得したいと考えています。例:

<string> xxx </string>

「xxx」だけを取得するにはどうすればよいですか?

4

3 に答える 3

7

コメントで述べたように、正規表現を使用して XML を解析するべきではありません。.NET にはそれを行うための優れたライブラリがあるためです。XDocumentLINQ から 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 に答える