2012-02-28 23 views
0

以下のコードを使用して.docxファイルを読み込み、ファイルからテキストを抽出しています。しかし、ここでの問題は、テキストを抽出することだけです。例えば、私の文書データは、その後docxファイル内のテキストを抽出する

I am line 1 

I am line 2  I am some other text 

の下にそれがあるとして、私はちょうどたい

I am line 1I am line 2I am some other text. 

ように私を返しているようなものである場合。どうやってやるの。以下は私が今使っているコードです。

open System 
open System.IO 
open System.IO.Packaging 
open System.Xml 

let getDocxContent (path: string) = 
use package = Package.Open(path, FileMode.Open) 
let stream = package.GetPart(new Uri("/word/document.xml",UriKind.Relative)).GetStream() 
stream.Seek(0L, SeekOrigin.Begin) |> ignore 
let xmlDoc = new XmlDocument() 
xmlDoc.Load(stream) 
xmlDoc.DocumentElement.InnerText 
let docData = getDocxContent @"C:\a1.docx" 
printfn "%s" docData 
+0

を意味していますか?私のために –

+0

、それは返します; 'val docData:string ="私はライン1です。私はライン2です。 "(適切なスペース数で) – Dirk

+0

@GeneBelitski私はフォーマットは必要ありませんが、私は改行とスペースを保存するだけでいいです。 – Exception

答えて

2

ロードする前に、XmlDocumentにPreserveWhitespaceプロパティを設定する必要があります。

soからコードを変更:へ

let xmlDoc = new XmlDocument() 
xmlDoc.Load(stream) 

:あなたは見た目を維持し、感じたいという "そのまま" あなたはで

let xmlDoc = new XmlDocument() 
xmlDoc.PreserveWhitespace <- true 
xmlDoc.Load(stream) 
+0

ありがとうございました。どうすれば改行も保存できますか? – Exception

+1

私はあなたと同じようなテスト文書を作成した後、/word/document.xmlをテキストエディタで開き、文書内に改行が全くないと思います。代わりに、段落は ...要素で区切られています。そのため、XPathクエリまたはLINQ to XMLを使用して抽出することができます。 –

+0

ご協力いただきありがとうございます。私は何百もの地獄のネットライブラリを使用しているのですか? – Exception