2

助けが必要です。2 つの xml タグの間の文字列を逆シリアル化すると、常に null になります。

次の xml ファイルの例:

<?xml version="1.0" encoding="utf-8" ?>
 <item name='First Item' size='1'>
   <Bits value='0'>
     1st String
   </Bits>
   <Bits value='1'>
     2nd String
   </Bits>
 </item>

そして、私は次のクラスを書きます:

[Serializable()]
public class Bits
{
    [XmlElement(ElementName = "Bits")]
    public String entryString { get; set; }
    [XmlAttribute("value")]
    public int entryValue { get; set; }
}


[Serializable()]
[XmlRoot("item")]
public class itemsReader
{
    public itemsReader()
    {
        _bitList = new List<Bits>();
    }
    [XmlElement("Bits")]
    public List<Bits> _bitList { get; set; }

    [XmlAttribute("name")]
    public String entryName { get; set; }
    [XmlAttribute("size")]
    public int entrySize { get; set; }
}

entryString だけが常に null です。

XML ファイルを読み取るには、次を使用します。

    itemsReader ireader = null;
    String path = @"PathtoString";

    XmlSerializer serializer = new XmlSerializer(typeof(itemsReader));

    var reader = File.OpenText(path);
    ireader = (itemsReader)serializer.Deserialize(reader);

手伝ってくれてありがとう!

4

2 に答える 2

3

Bits 自体内の要素を検索する属性で装飾entryStringしました。XmlElementBits

Bitsしかし、要素の内部テキストが必要です。そのために、 と呼ばれる別の属性がありますXmlText

だからこれを変える

[XmlElement(ElementName = "Bits")]
public String entryString { get; set; }

[XmlText]
public String entryString { get; set; }
于 2013-08-18T09:29:05.213 に答える
0

入力に対してコードを実行し、出力を取得しましたが、Bitsクラスで、プロパティentryStringに属性があることがわかりました

[XmlElement(ElementName = "Bits")]

しかし、あなたのxmlファイルには<Bits>タグがありません1st String。だから私はそれらを追加して得ました:

<?xml version="1.0"?>
<item name="First Item" size="2">
  <Bits value="1">
    <Bits>firstOne</Bits>
  </Bits>
  <Bits value="2">
    <Bits>secOne</Bits>
  </Bits>
</item>

そして、あなたのコードは機能しました

そのため、xml ファイルを変更したり、属性を削除したりできます。あなたの電話

于 2013-08-18T08:59:37.630 に答える