2017-12-27 22 views
-3

XMLから値を取得してオブジェクトに入れようとしていますが、デバッグしている間に取得しています。Exists =(c.Element( NS + "Answer")。値)、デバッガが停止し、メッセージ表示フィールド。ちょうど私が は、事前に問題の感謝を理解する助けてくださいOBJ回答要素から値を取得し、存在に入れたいXMLから値を取得してオブジェクトに入れよう

<Root> 
    <sub> 
    <details > 
     <Answer>Yes</Answer> 
     <Addrees > 
      <street>Test</street> 
      <state></state> 
     </Addrees> 
      <Addrees> 
      <street>Test2</street> 
      <state></state> 
     </Addrees> 
      <Addrees> 
      <street></street> 
      <state></state> 
     </Addrees> 
      <Addrees> 
      <street>Test4</street> 
      <state></state> 
     </Addrees> 
     <details> 
     </sub> 
     </Root> 

私のC#コードは、あなたのコードでは

 private Result<FormulaRate, string> getinfoRate(XDocument F4XDocument) 
    { 

     Result<FormulaRate, string> FormulaRatetest = new Result<FormulaRate, string>(); 
     var doc = (from c in F1XDocument.Elements(NS + "Root") 
           .Elements(NS + "sub") 
           .Elements(NS + "details") 

              .Descendants(NS + "Answer") 

            select new FormulaRate() 
            { 
             // Exists decleard as string in FormulaRate class 
             Exists = (c.Element(NS + "Answer").Value), 


            }).ToList<FormulaRate>(); 
     FormulaRatetest.DataList.AddRange(doc); 
     return FormulaRatetest; 
    } 
+0

あなたのXMLは有効なので、コードの多くを見ることなくどこに問題があるのか​​を知ることは難しいです。失敗しているコード行と例外が表示されますか? – pmcilreavy

+0

pmcilreavy、更新ありがとうございました – John

答えて

0
//Get the XDocument here. Assuming we have the xml in a string called xmlString. Could use XDocument.Parse() and load it in from a file if you do not have it in a string 
var doc = XDocument.Parse(xmlString); 

//Here we pull the Rate value, while checking for nulls along the way and just returning null if we find one. 
var rate = doc.Descendants("Root").Elements("Rate").FirstOrDefault() == null ? null : doc.Descendants("Root").Elements("Rate").FirstOrDefault().Value ?? null; 

ですあなたの命名は、私はあなたが

private Result<getRateclass, string> getRate(XDocument XDocument) 
012を変更することをお勧め恐ろしい

です

private Result<getRateclass, string> getRate(XDocument document) 

のようなものに

はまた、あなたは、現在レートが実際に存在するかどうかを確認するために何のチェックを持っていません。上記の例を使用すると、NULLチェックを行うことができますrate

+0

ご協力いただきありがとうございました。質問を更新しました。 私もあなたの方法を試しましたが、うまくいきませんでした。 – John

+0

私は答えを投稿してからxmlを変更しました。元のXMLが間違っていた場合はうまくいかないでしょう。それはあなたのオリジナルのXmlで動作します。ごくわずかな労力で新しい要件に合わせて試してみることができます。 – James

関連する問題