iOS의 건강 관리 데이터를 CSV로 변환
6591 단어 GoAppleWatchiOS
재활용을 위해 데이터를 출력했지만 xml 형식으로는 사용하기 어려워서 CSV로 변환해 봤습니다.
github 저장소
우리측 환경
방법
Export Health Darta
을 선택하여 zip 파일을 내보냅니다.조금 있으면 파일을 어떻게 하느냐는 질문을 받을 수 있기 때문에 임의의 방법으로 컴퓨터에 보낸다
우리는 맥에서 iCloud를 사용하여 데스크톱에 협력합니다.
zip 파일 압축 풀기
.
├── README.md
├── apple_health_export
│ ├── export.xml
│ └── export_cda.xml
package main
import (
"encoding/xml"
"io/ioutil"
"log"
"os"
"github.com/gocarina/gocsv"
)
type HealthData struct {
XMLName xml.Name `xml:"HealthData"`
Record []Record
}
type Record struct {
Type string `xml:"type,attr" csv:"type"`
SourceName string `xml:"sourceName,attr" csv:"-"`
SourceVersion string `xml:"sourceVersion,attr" csv:"-"`
Unit string `xml:"unit,attr" csv:"unit"`
CreationDate string `xml:"creationDate,attr" csv:"-"`
StartDate string `xml:"startDate,attr" csv:"startDate"`
EndDate string `xml:"endDate,attr" csv:"endDate"`
Value string `xml:"value,attr" csv:"value"`
}
func main() {
// open xml file.
xmlFile, err := os.Open("./apple_health_export/export.xml")
if err != nil {
log.Fatal(err)
}
defer xmlFile.Close()
// read xml data.
xmlData, err := ioutil.ReadAll(xmlFile)
if err != nil {
log.Fatal(err)
}
// parse xml and export to csv.
csvFile, err := os.Create("./export.csv")
if err != nil {
log.Fatal(err)
}
defer csvFile.Close()
var healthData HealthData
xml.Unmarshal(xmlData, &healthData)
records := healthData.Record
gocsv.MarshalFile(&records, csvFile)
}
득점
HealthData에는 Record 데이터 구조로 여러 개의 데이터가 포함되어 있기 때문에
HealthData 및 Record 구조가 준비되어 있습니다.
Record 구조체에서 항목 추출 기술
csv:"xxx"
추출할 필요가 없는 항목을 csv:"-"
로 설정하면parser가 잘 처리됩니다.개선 사항
마지막
띄어쓰기지만 사용할 수 있는 데이터를 얻었기 때문에
CSV로 뭔가 할 수 있는지 해보고 싶어요.
Reference
이 문제에 관하여(iOS의 건강 관리 데이터를 CSV로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ishibashi-futoshi/items/de008ced0d23f31601cd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)