2012-01-12 8 views
0

クライアントから期待されるデータキー(xml)を定義するXMLファイルがあります。例えば。だから、定義されたXMLフォーマットに基づいてXMLを定義する方法のアルゴリズム

<a> 
    <bb>Some Data</bb> 
    <c>Some Data</c> 
</a> 
<xx> 
    <b>Some Data </b> 
    <c>Some Data </c> 
</xx> 

以下のように

<aa alias="a"> 
    <bb alias ="b">String</bb> 
    <cc alias ="c">String</cc> 
</aa> 
<xx alias ="x"> 
    <bb alias ="b" >String</bb> 
    <cc alias ="c">String</cc> 
</xx> 

だからデータファイルを作成するためには、ユーザーが今のご質問には、実際のタグまたはエイリアスタグを使用することができます。私がデータを保存しているときには、エイリアスではなくオリジナルのキーを使用して保存する必要があります。そのため、良いアルゴリズムやデータ構造を使用してパフォーマンスを向上させることができます。これを解決する根本的な方法は、各キーについて、xml形式をチェックし、それが本当のキーかエイリアスかを判断することです。エイリアスが使用されている場合は、元のキーを取得します。

Thanks a lot 
+0

なぜ解析中にエイリアスを解決しないのですか?あなたのアプリケーションの内部では、標準形式(実際のタグ名)で作業することができます。 Btw:なぜ私は上記のようなXML形式が必要なのか分かりませんでしたか? – home

+1

XMLの構造を定義するために[XMLスキーマ(XSD)](http://en.wikipedia.org/wiki/XML_Schema_(W3C))を使用しないのはなぜですか?これは標準で広くサポートされている方法です。 –

答えて

0

一つの解決策は、2つのデータ構造、セット(すなわちHashSet)とマップ(すなわちHashMap)を使用することです。

セットにはすべての実際のタグが定義され、マップにはエイリアスキーと実際のタグ値が含まれます。

タグが実際のタグであるかどうかを判断するには、containsセット(O(1)のHashSet)を使用します。表示されていない場合は、get(alias)HashMapの場合はO(1))を使用して実際のタグを取得します。

値がエイリアスか実際のタグかを事前に知る方法がある場合、そのセットは必要ありません。

+0

私はHashMapを使用することを考えましたが、問題は多数のキーが存在することです。可能なキーは、xx:b => bb、xx:bb => b、x:bb => b、x:bです。実際には、エイリアスを使用したかどうかを知る方法がないため、ユーザーのデータに基づいてキーの検索を作成する方法がないため、私は明らかです。 – tabiul

関連する問題