How to support multiple xs:choice ?

オープン
#588 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
rust
領域
backend

調査の方向性

The report provides an XML schema and a Rust AngTag example with two #[serde(rename="$value")] fields, which fail with a duplicate-field error. Start by reading quick-xml’s Serde deserialization handling for $value and check how it treats multiple choice fields. Done means a structure can deserialize the demonstrated XML with the two distinct XSD choices represented; no implementation files or tests are named in the issue.

索引モデルが issue の本文から書いたものです。

説明

question serde

I want to deserialize the following xml:

<any-tag>
  <field>...</field>
  <choice>
    <one>...</one>
    <m>....</m>
  </choice>
</any-tag>

"one" and "m" belong to different xsd:choice.
The full schema looks like this:

<xsd:complexType name="any-tag">
    <xsd:element name="field" type="xsd:string" minOccurs="1" maxOccurs="1"/>
    <xsd:choice>
        <xsd:element name="one" type="xsd:string" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="two" type="xsd:string" minOccurs="0" maxOccurs="1"/>
    </xsd:choice>
    <xsd:choice>
        <xsd:element name="m" type="xsd:string" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="n" type="xsd:string" minOccurs="0" maxOccurs="1"/>
    </xsd:choice>
</xsd:complexType>

I define a structure like this

#[derive(Serialize, Deserialize, Debug)]
pub struct AngTag{
    #[serde(rename="$value")]
    choice_one:X,

    #[serde(rename="$value")]
    choice_two:Y,

    field:String

}

I get an error:"thread 'main' panicked at 'called Result::unwrap() on an Err value: Custom("duplicate field $value")"

主要言語
Rust
スター
1.6k
フォーク
299
平均マージ
2日 4時間
マージ済み PR(30日)
9

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

tafia/quick-xml のほかの issue

tafia/quick-xml の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。