0

ファイルから構築された別の XElement から読み取る XElement を作成しようとしています。以下はコードのサンプルです。私の質問は、そこにない可能性のあるソース属性をどのようにコーディングすればよいですか? docHeader と送り状は XElements です。1 つの属性が欠落している場合にこれを実行すると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。

私は、要素と属性が存在しない場合にそれらを読み取る「安全な」方法があるかどうかを尋ねていると思いますか?

invoice.Add(
    new XAttribute("InvoiceNumber", docHeader.Attribute("InvoiceNumber").Value), 
    new XAttribute("InvoiceSource", docHeader.Attribute("InvoiceSource").Value));
4

2 に答える 2

0

InvoiceSource属性が存在しない場合docHeader.Attribute("InvoiceSource")は null を返すため、例外が発生しています。のような簡単なチェック

if (docHeader.Attribute("InvoiceSource") != null)
{
    // here you can be sure that the attribute is present
}

で十分でしょう。

于 2012-03-24T17:03:18.347 に答える
0

より柔軟で読みやすいように、コードを分割してみてください。

var src = docHeader.Attribute("InvoiceSource");
var num = docHeader.Attribute("InvoiceNumber");

if(src != null && num != null)
{
  invoice.Add(
    new XAttribute("InvoiceNumber", num.value), 
    new XAttribute("InvoiceSource", src.value)); 
}
于 2012-03-24T17:07:21.363 に答える