-3

タイトルは、私が本当に作りたい質問に比べるとかなりシンプルですが、どのように表現すればよいのかよくわかりません。私が作成しているXML解析モジュールの場合、XMLドキュメントの正確な構造に従ってキーと属性を追加する必要があります。次に例を示します。

<Person>
    <Name>Someone</Name>
    <Age>25</Age>
    <Skills>
    <Skill>Projectile vomiting</Skill>
    </Skills> 
</Person>

戻る必要があります:

{ "Person" : { "Name" : "Someone", "Age" : "25", "Skills" : { "Skill" : "Projectile vomiting"}}}

...プログラムがXMLドキュメントの正確な構造を知らなくても。任意の数の属性、任意の数のネストされた属性を持つことができます。

使用する

Dict["key"]["anotherkey"]["yetanotherkey"] = Value

XMLドキュメントが3つの属性ネストを使用しているかどうか、またはそれらの属性のネストにさらに多くのネストが含まれているかどうかがわからないため、機能しません。

私が持っていたアイデアは、パーサーがネストの始まりに遭遇するたびに、つまりパーサーが到達した場合に「ノードを開く」ことでした。

<Skill> 

内に属性を割り当てます

<Skills> and </Skills> 

Dict ["Person"] ["Skills"]、およびいつ

</Skills>

が発生すると、ノードが「閉じ」、Dict ["Person"]に属性が割り当てられ続けますが、これを実装する方法がわかりません(ただし、ドキュメントのすべての値、属性、およびノー​​ドを取得できます)。

上記のように、XMLドキュメントの正確な構造を知らなくても、辞書を正しい形式でネストするにはどうすればよいですか?

4

1 に答える 1

2

XMLドキュメント内のポイントに対応するスタックを使用できます。開いているタグに遭遇するたびに、それをスタックにプッシュし、stack.peek()で値の属性の入力を開始します。終了タグに遭遇すると、スタックから最後のタグをポップし、スタックの新しい最上位でタグの属性を埋めることがわかります。

于 2012-12-09T00:19:12.860 に答える