要素名を json のキーとして使用する代わりに、ノード タイプを記述する、より一般的なキーを使用して json を生成する必要があります。d3.js は、これらのタイプの json ファイルを使用して視覚化を生成します。node.js モジュール xml2js を使用して、単純化されたバージョンの xml ドキュメントを解析すると、次のようになります。
{
"XML": {
"$": {
"xmlns": "http://example.org/example/2011/1"
},
"Building": [
{
"BuildingID": [
{
"$": {
"id": "BuildingAudit"
}
}
],
"ProjectStatus": [
{
"Date": [
"2013-07-16"
],
"EventType": [
"audit"
]
}
]
},
{
"BuildingID": [
{
"$": {
"id": "BuildingRetrofit"
}
}
],
"ProjectStatus": [
{
"Date": [
"2013-08-06"
],
"EventType": [
"job completion testing/final inspection"
]
}
]
}
],
"Project": [
{
"BuildingID": [
{
"$": {
"id": "BuildingRetrofit"
}
}
],
"ProjectDetails": [
{
"ProjectStatus": [
{
"Date": [
"2013-08-06"
],
"EventType": [
"job completion testing/final inspection"
]
}
],
"ProjectSystemIdentifiers": [
{
"$": {
"id": "Project_JobCompletion"
}
}
]
}
],
"ProjectID": [
{
"$": {
"id": "Project"
}
}
]
}
]
}
私が必要とするのは、要素名のキーが「名前」であり、子が「子」のキーを持つ識別可能なノードである、このようなものです。
{
"name": "flare",
"children": [
{
"name": "analytics",
"children": [
{
"name": "cluster",
"children": [
{"name": "AgglomerativeCluster", "size": 3938},
{"name": "CommunityStructure", "size": 3812},
{"name": "HierarchicalCluster", "size": 6714},
{"name": "MergeEdge", "size": 743}
]
},
{
"name": "graph",
"children": [
{"name": "BetweennessCentrality", "size": 3534},
{"name": "LinkDistance", "size": 5731},
{"name": "MaxFlowMinCut", "size": 7840},
{"name": "ShortestPaths", "size": 5914},
{"name": "SpanningTree", "size": 3416}
]
}
]
}
]
}
xml ドキュメントには多くの種類の要素があり (上記の例よりも多く)、かなり深くネストされています。さらに、どの要素が存在するかは先験的にわかりません。これらの要素の多くはオプションです。私はあらゆるタイプのソリューション (javascript) に対してオープンです - それが xml パーサーでオプションを設定するか、deepClone タイプの操作でデータを条件付きでコピーするかどうか。
ありがとうございました