XMLのベストプラクティス:属性と追加要素 [重複]の比較
2023-08-09 19:25:42
質問
この2つの違いは何ですか、また、それぞれどのような場合に使用すればよいですか。
<person>
<firstname>Joe</firstname>
<lastname>Plumber</lastname>
</person>
対
<person firstname="Joe" lastname="Plumber" />
ありがとうございます。
どのように解決するのですか?
XMLには要素中心と属性中心があり、あなたの例では、最初のものが要素中心、2番目は 属性中心です。
ほとんどの場合、この2つのパターンは等価ですが、いくつかの例外があります。
属性中心(attribute centric
- 要素中心より小さいサイズ。
- ほとんどの XML パーサーは、ユーザー データは要素によって提示され、属性は要素を説明するために使用されると考えるので、あまり相互運用性がありません。
- あるデータ型に対して nullable 値を提示する方法がありません。例えば nullable int です。
- 複合型は表現できません。
要素中心
- 複合型は要素ノードとしてのみ表示可能です。
- 非常に相互運用性が高い
- 属性中心よりサイズが大きい。(圧縮を使えばかなり小さくできる)。
- Nullableなデータはxsi:nil="true"属性で表現できる。
- パーサはユーザーデータのための要素だけを探すので、パースするのがより速いです。
実用的
XMLのサイズを本当に気にするのであれば、適切であればいつでも属性を使用してください。null 可能なもの、複雑な型、または大きなテキスト値を保持する必要がある場合は、要素を使用します。XML のサイズを気にしない場合、または転送時に圧縮を有効にする場合は、より拡張性の高い要素にこだわります。
背景
DOT NETでは、XmlSerializerはオブジェクトのプロパティを属性または要素のいずれかにシリアライズすることができます。 最近のWCFフレームワークでは、DataContractシリアライザーはプロパティを要素にのみシリアライズでき、XmlSerializerよりも高速です。理由は明らかで、デシリアライズ中に要素からユーザーデータを探す必要があるだけです。
同様に説明している記事があります。 要素 vs 属性
関連
-
[解決済み] XDocument または XmlDocument
-
[解決済み] ウェブサービスのレスポンスにおけるtext/xmlとapplication/xmlの違いは何ですか?
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] XMLの<![CDATA[]]>は何を意味するのですか?
-
[解決済み] XMLを解析して、特定のノード属性のインスタンスをカウントするには?
-
[解決済み] XML文書でエスケープする必要がある文字は何ですか?
-
[解決済み] XMLでタグのブロックをコメントアウトするにはどうすればよいですか?
-
[解決済み] XMLの要素とノードはどう違うのですか?
-
[解決済み】xsd:includeとxsd:importの違いは何ですか?
-
[解決済み] Linq to XML DescendantsとElementsの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XML属性とXML要素
-
[解決済み] 正規表現 \p{L} and \p{N}
-
[解決済み] XML スキーマ。テキストのみを含む属性を持つ要素?
-
[解決済み] xmlのCDATAエンドトークンをエスケープする方法はありますか?
-
[解決済み] Eclipse で XML の検証を無効にする
-
[解決済み] XPathで名前空間を無視する方法
-
[解決済み] SVGをSVGで埋め込む?
-
[解決済み] Visual Studio IDE における XSD を用いた XML 検証
-
[解決済み] XML属性値の改行は許されますか?
-
[解決済み] xpathを使用してノードのN番目の子を取得する