2011-01-20 14 views
1

私はLINQ to XMLを使用してXML文書を解析しています。私はXMLスキーマの設計に影響を与える能力も持っています。与えられたXML要素Personは、1つ以上のAddress要素を子として持つことができます。 Personが1つ以上のAddressノードを含むようにXMLを定義するか、personに1つ以上のAddressノードを含むAddressesノードを格納する方が良いでしょうか?ありがとう。LINQからXMLへの最も効率的な使用

答えて

1

あなたと希望するデータとの間の要素が少ないほど、良い結果が得られます。しかし、XMLの構造を使用することのポイントは、データを理解することです。質問する1つの質問は:グループアドレスごとに一緒に必要がありますか?もしそうなら、それは例えば、グループ化が何であるかを記述するための中間要素を持っていることを支払う:

<Person> 
    <Addresses Group="Summer"> 
     <Address Street="123 Street Name" .../> 
    </Addresses> 

    <Addresses Group="Winter"> 
     <Address Street="456 Other Street" .../> 
    </Addresses> 
</Person> 

いや、そこはポイントは、中間素子を有するでいない、そしてそれはあなたの保存のオーバーヘッドの費用がかかります場合とそれを解析する。

LINQ-to-XMLを使用すると、コード内で子要素のコレクションを取得するのが簡単になることが懸念される場合は、どちらのシナリオにも簡単に対処できます。たとえば:

<Person> 
    <Address .../> 
    <Address .../> 
    <Phone .../> 
    <Phone .../> 
    <Email .../> 
</Person> 

あなたが自明欲しいものを抽出することができます。

var Addresses = personElement.Elements("Address"); 
var PhoneNumbers = personElement.Elements("Phone"); 

これは、あなたが<電話>または<EmailAddresses>のような中間的要素を持っている必要はありません、あなただけ追加したいこと子要素のグループをカバーする属性/メタデータを導入する必要がある場合

+0

優秀、ありがとうございました。 – user361540

関連する問題