https://github.com/amider-dev/exceltoxml

エクセルで入力されたツリー構造のデータをスキーマに従ってXMLファイルへ変換する。共通・非共通項目を持つ複数のXMLファイルを一括生成できる。Convert tree-structured datasets described in Excel table into multiple XML files following the schema.

https://github.com/amider-dev/exceltoxml

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (5.5%) to scientific vocabulary
Last synced: 6 months ago · JSON representation

Repository

エクセルで入力されたツリー構造のデータをスキーマに従ってXMLファイルへ変換する。共通・非共通項目を持つ複数のXMLファイルを一括生成できる。Convert tree-structured datasets described in Excel table into multiple XML files following the schema.

Basic Info
  • Host: GitHub
  • Owner: AMIDER-dev
  • License: mit
  • Language: C#
  • Default Branch: main
  • Homepage:
  • Size: 405 KB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 2
Created 10 months ago · Last pushed 8 months ago
Metadata Files
Readme License

README.md

DOI

Please follow the license and cite the DOI when you use this software.

ExcelToXml

エクセルで入力されたツリー構造のデータをスキーマに従ってXMLファイルへ変換する。共通・非共通項目を持つ複数のXMLファイルを一括生成できる。Convert tree-structured datasets described in Excel table into multiple XML files following the schema.
プログラムはサンプルXMLファイルに従ってXMLデータ構造を定義する。要素名定義テーブルで指定されるXPathに従い、データ構造の中へデータテーブルA・Bの値を入力する。作成したXMLファイルのスキーマ(XSD)に対する妥当性検証を行う。各テーブルはエクセルファイルとし、各セルの書式は全て文字列で与える。
あるスキーマに対してサンプルXMLと要素名定義テーブルを一度作っておけば、エクセル表形式のメタデータ(データテーブルA・B)からXMLへの変換をコマンド1つで行えるようになる。また、複数のXMLファイルを一括生成できる。

mermaid flowchart LR A[サンプルXML] -->|XML構造| D[XML作成] B[データテーブルA・B] -->|XML各要素の値| D C[要素名定義テーブル] -->|データテーブルの各要素名とXPathの対応|D D --> E[XMLスキーマ検証] G[XSDファイル] --> H[XSD構文検証] H --> E

ディレクトリ

  • ExcelToXml: ソースコード
  • examples: 入出力データ例。各スキーマ(XSDファイル)のschemaLocation属性はローカルファイルを参照するように編集してある。
    • ISO: ISO Geographic MetaData (GMD) スキーマ準拠のメタデータを作成する例。(スキーマ参考URL https://committee.iso.org/sites/tc211/home/re.html; https://schemas.isotc211.org/19139/-/gmd/1.0/gmd/ )
    • SPASE: Space Physics Archive Search and Extract (SPASE) スキーマ準拠のメタデータを作成する例。(スキーマ参考URL https://spase-group.org/data/schema/ )
    • JPCOAR: オープンアクセスリポジトリ推進協会 (JPCOAR) スキーマ準拠のメタデータを作成する例。(スキーマ参考URL https://schema.irdb.nii.ac.jp/ja )
    • 各フォルダ内のファイル
    • sample.xml: サンプルXMLファイル
    • DataTable_A.xlsx: データテーブルA
    • DataTable_B.xlsx: データテーブルB
    • ElementDefine.xlsx: 要素名定義テーブル
    • schemaフォルダ又は.xsdファイル: スキーマファイルの格納フォルダ又はスキーマファイル
    • output1.xml, output2.xml: ExcelToXmlによりデータテーブルから作成されたXMLファイル

環境要件

  • .NET (C#) 8.0.3以上

入力データ

サンプルXMLファイル

XML構造をプログラムに与えるためのタグ構造のみのXML。XSDファイルで指定されるスキーマに従っていること。データテーブルに記載された要素を全て含んでいること。各要素の値は入っていないものとする。ユーザーが使用するXML構造のみの記述で良い。XSDではなくサンプルXMLで構造を与えることで、大規模なXSDを毎回読み込むことを避ける。既存のXMLファイルから値を削除して作るか、XSDファイルから一般的なXMLエディタで作成できる。

データテーブルA・B

テーブル形式のメタデータ。要素名と各要素の値。 各出力XMLファイルで共通の項目はテーブルAで与えられ、個別に異なる値はテーブルBで与えられる。 要素名と値の階層構造はテーブルA・BのElement Name欄でセルの結合を使用して表現される。 データテーブルA・BでElement Name欄が使う列数(要素名の階層数)は可変なので、終了列をエクセルのB1セルで指定する。 出力ファイル名はテーブルBのOutput File欄で指定する。出力されるXMLファイルの数はテーブルBのファイル名の数Nで決まる。 出力ファイルが1つだけの場合、データテーブルAは空欄としてデータテーブルBに全て記入すれば良い。

データテーブルA

Element Name End B
Element Name
要素名A-1 値1
要素名A-2 要素名A-2-1 値2-1
要素名A-2-2 値2-2
要素名A-3 要素名A-3 値3
...

データテーブルB

Element Name End B
Output File ファイル名1 ファイル名2 ... ファイル名N
Element Name
要素名B-1 値1 値1 値1
要素名B-2 要素名B-2-1 値2-1 値2-1 値2-1
要素名B-2-2 値2-2 値2-2 値2-2
要素名B-3 要素名B-3-1 値3 値3 値3
...

要素名定義テーブル

データテーブルの要素名とサンプルXMLの各XPathの対応付けを定義する。要素名の階層構造はスラッシュ(/)で表す。記載された各XPathをノードとして認識するため、値の入るノードだけでなく、繰り返される可能性のあるノード(タグ)に対しても、そのタグを末尾とするXPath&要素名を定義しておく。ある要素の繰り返しがあり、かつ繰り返される起点がその要素の上位タグの場合、そのタグ名も親要素として定義する必要がある。

Element Name XPath
要素名A-1 パスA-1
要素名A-2 パスA-2
要素名A-2/要素名A-2-2 パスA-2-2(パスA-2の続き)
要素名B-1 パスB-1

XSDファイル

作成したXMLが従うべきスキーマファイル。

使い方

ビルド

ソリューションフォルダ(ExcelToXml)で dotnet build

実行

モード1

データテーブルを要素名定義テーブルとサンプルXMLに従ってXMLファイルへ変換する。-xオプションが指定された場合は各XMLファイルに対してXSD妥当性検証を行う。 dotnet run --project <ソリューションフォルダのパス>/ExcelToXml.Console -- -a <データテーブルAのパス> -b <データテーブルBのパス> -s <サンプルXMLのパス> -e <要素名定義テーブルのパス> -x <XSDファイルのパス(省略可)> --xsdfolder <XSDファイル群のルートフォルダ(省略可)> -o <出力先パス>

モード2

既存のXMLファイルに対してXSD妥当性検証を行う。 dotnet run --project <ソリューションフォルダのパス>/ExcelToXml.Console -- --xmlfiles <xmlファイルのパス1> <xmlファイルのパス2> -x <XSDファイルのパス>

コマンド引数

| | 省略形 | | | ---- | ------ | ---- | | --datatablea | -a | データテーブルAのパス | | --datatableb | -b | データテーブルBのパス | | --samplexml | -s | サンプルXMLのパス | | --elementdefine | -e | 要素名定義テーブルのパス | | --xsd | -x | XSDのルートファイルのパス | | --xsdfolder | | 全てのXSDファイルが格納されているルートフォルダ。--xsdオプションで指定されるXSDルートファイルと同じフォルダに全て格納されている場合、省略可。| | --output | -o | 出力先フォルダ | | --xmlfiles | | 入力XMLファイルのパス。モード2の場合のみ使用。 | | --info | | 実行中処理の詳細を出力する | | --nowarning | | 警告メッセージを表示しない |

例: examples/ISOの実行方法

dotnet run --project ./ExcelToXml/ExcelToXml.Console -- -a ./ISO/DataTable_A.xlsx -b ./ISO/DataTable_B.xlsx -e ./ISO/ElementDefine.xlsx -s ./ISO/sample.xml -x ./ISO/schema/gmd/gmd.xsd --xsdfolder ./ISO/schema/ -o ./ スキーマ検証済みのXMLファイル output1.xml, output2.xml ができる。

License

This software is released under the MIT License. It uses ClosedXML, which is also licensed under the MIT License.

AMIDERプロジェクト

Owner

  • Name: AMIDER-dev
  • Login: AMIDER-dev
  • Kind: organization

GitHub Events

Total
  • Release event: 5
  • Public event: 1
  • Push event: 11
  • Create event: 4
Last Year
  • Release event: 5
  • Public event: 1
  • Push event: 11
  • Create event: 4

Dependencies

ExcelToXml/AutoDIRegisteGenerator/AutoDIRegisteGenerator.csproj nuget
  • Microsoft.CodeAnalysis.Analyzers 3.11.0 development
  • Microsoft.CodeAnalysis.CSharp 4.11.0
ExcelToXml/ExcelToXml/ExcelToXml.csproj nuget
  • ClosedXML 0.104.2
  • Microsoft.Extensions.DependencyInjection 9.0.0
ExcelToXml/ExcelToXml.Console/ExcelToXml.Console.csproj nuget