簡體   English   中英

在Scala中將txt文件轉換為XML

[英]Convert a txt file to XML in Scala

對於在Scala中運行但不知道從哪里開始的程序,我應該將一個小的平面文本(txt)文件轉換為XML。 我嘗試了各種方法,但到目前為止遇到了麻煩。 我的文件有幾個字符串和幾個整數。

我仍在使用非常基本的Scala,因此越簡單越好!

預先感謝任何幫助的人。

有幾個步驟。

首先,我將確定數據的格式獨立結構,並創建一個Scala類來保存此數據。 然后,我要弄清楚該數據如何在文本文件中格式化,並編寫一個例程以解析文本文件並使用該數據填充類(或該類的列表)。 最后,找出XML文件的架構,並使用Scala的XML文字將數據寫入其中。

假設您的數據由一個人的姓名,年齡,身高和體重組成。 用來保存數據的Scala類如下所示:

case class Person(name: String, age: Int, height: Double, weight: Double)

在文本文件中,可以用最簡單的幾種方法表示:

Peter
34
178.2
83.2

或“屬性”樣式格式:

name = Peter
age = 34
weight = 178.2
height = 83.2

或最可能的CSV格式(如果一個文件中有多個人):

Peter,34,178.2,83.2
Tom,53,182.3,95.3
John,27,175.1,74.5

讓我們以最后一種格式為例。 讀取文件的最簡單方法是這樣的:

val lines = io.Source.fromFile(new java.io.File("test.txt")).getLines.toList

然后將每一行解析為一個Person:

val persons = lines map { line =>   
    val elements = line split ","
    Person(elements(0), elements(1).toInt, elements(2).toDouble, elements(3).toDouble)
}

在Person類上添加一個不錯的方法,將其轉換為一些不錯的XML:

    def toXml = 
        <person>
            <name>{ name }</name>
            <age>{ age }</age>
            <height>{ height }</height>
            <weight>{ weight }</weight>
        </person>   

最后將人員列表映射到XML:

val personsXml = <persons>{ persons map(_.toXml) }</persons>

並將其寫入文件:

new java.io.FileOutputStream(new java.io.File("test.xml")).write(personsXml.toString.getBytes)

請注意,錯誤處理和文件的正確關閉留給讀者練習! :)

我不知道你到底想做什么。 如果只想包裝這些值,則可以執行以下操作:

def string2xml[A](a: A): String = a match {
  case s: String => "<String>" + s + "</String>"
  case i: Int => "<Int>" + i + "</Int>"
  case any => "<Any>" + any + "</Any>"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM