0

私の C# プログラムでは、車のデータを xml ファイルから車のオブジェクトに読み込んでいます。

これは私のxmlファイルです:

  <Car>
    <CarID>1</CarID>
    <CarName>Honda</CarName>
    <CarColor>Blue</CarColor>
  </Car>
  <Car>
    <CarName>Ford</CarName>
    <CarColor>Yellow</CarColor>
  </Car>
  <Car>
    <CarID>3</CarID>
    <CarName>BMW</CarName>
    <CarColor>Green</CarColor>
  </Car>

2 番目の車のエントリには ID がないことに注意してください。したがって、null 例外を回避するには、これを確認する必要があります。

次のように、C# コードに xml データをロードします。

      List<Car> Cars =
(
    from el in XDocument.Load("XML_Files/cars.xml").Root.Elements("Car")
    select new Car
    {
        CarID = (int)el.Element("CarID"),
        CarName = (string)el.Element("CarName"),
        CarColor = (string)el.Element("CarColor")
    }).ToList();

これを回避するために、文字列データの場合、これを置き換えるという別の質問を読みました。

CarName = (string)el.Element("CarName")

これとともに:

CarName = ((string)el.Element("CarName") != null) ? (string)el.Element("CarName") : string.Empty

これは文字列値に対してはうまく機能しますが、私が理解できないのは、このロジックを int 値に適用する方法です。

では、この行を変更するにはどうすればよいですか。

CarID = (int)el.Element("CarID")

null 値をテストするには?

私はこの方法を試しましたが、うまくいきません:

CarID = ((int)el.Element("CarID") >= 0) ? Convert.ToInt32(el.Element("CarID").Value) : 0

助言がありますか?

4

1 に答える 1

1

2 つの例では、2 つの根本的に異なるチェックを行っています。このstring例では、要素が であるかどうかを確認していますnull。このint例では、それが存在すると仮定して、整数値のチェックに直接ジャンプします。null最初に、例と同じではないことを確認してくださいstring

CarID = (el.Element("CarID") != null) ? Convert.ToInt32(el.Element("CarID").Value) : 0;
于 2013-09-28T23:59:58.330 に答える