XML / JSON / handoff guide
XMLをJSONへ渡す前に属性・namespace・順序を確認する
JSONへ変換できても、属性・namespace・兄弟要素の順序・mixed contentが同じ意味とは限りません。情報損失候補を先に分けます。
XML / JSON / handoff guide
JSONへ変換できても、属性・namespace・兄弟要素の順序・mixed contentが同じ意味とは限りません。情報損失候補を先に分けます。
XML属性をJSONの要素値へ黙って混ぜず、属性専用のキー方針を決めます。namespaceはprefixの文字列ではなくURIが識別子です。prefixが変わってもURIの意味を失わないように記録します。
<item xmlns:x="urn:example" x:id="7">A</item>
→ element text: "A"
→ attribute: x:id = "7"
→ namespace URI: urn:example (prefix x may change)| 境界 | 確認すること |
|---|---|
| attribute | 属性と要素値を別欄で表し、同名衝突の方針を決める。 |
| namespace | prefixではなくnamespace URIを保持し、未定義prefixを補完しない。 |
| order | 意味のある兄弟要素の順序を配列などで保持する。 |
| repeated element | 同名要素を最後の値で上書きせず、配列化の方針を確認する。 |
<p>before<b>bold</b>after</p>のようにテキストと子要素が混ざるXMLは、単一のJSON文字列へ潰すと順序や装飾の境界を失います。専用のparts配列など、受け側の表現を先に合意します。
既存のローカルXML→JSON converterは変換結果を確認する道具です。このガイドは情報損失候補と受渡し方針を確認するもので、全XMLをlosslessに変換できるとは言いません。
| case | 判定 | 確認 |
|---|---|---|
attribute-boundary | explicit-attribute-policy | 属性専用キーと要素値の衝突を決める。 |
namespace-identity | uri-preserved-prefix-may-change | URIを保持し、prefixだけに依存しない。 |
sibling-order | order-preserved | 意味のある子要素の順序を配列で残す。 |
repeated-element | array-policy | 同名要素を配列にするか明示する。 |
mixed-content | loss-risk | textと子要素の順序を一つの文字列に潰さない。 |
unsupported-or-upload | reject | 曖昧なmappingやuploadは差し戻す。 |
このガイドはXMLを外部へ送信せず、schema推論や外部XPathサービスを呼びません。本番の秘密、認証情報、個人情報を貼り付けず、無害なfixtureで確認してください。