2017-08-29 45 views
0

我試圖從每個節點檢索具有特定處理程序的「名稱」,「值」和「描述」屬性。C#不正確讀取XMLNodeList

我正在尋找名爲「VariantData」的每個節點都有一個type =「eContact」。然後,對於每個項目,我查看子節點Row節點並檢索每個節點的Name,Value和Description值。

問題是某些項目被檢索,而其他項目不是。有人可以幫助弄清楚爲什麼有些物品沒有顯示出來嗎? (請參照最後的結果圖像)

完整的XML位於: XML I'm Using

這裏是我的C#代碼(我用剃刀語法所以忽略HTML)

@using System.Xml; 
@{ 
    string eContactName = "", eContactValue = "", eContactDescription = ""; 

    //Create The XML Document 
    XmlDocument xDoc = new XmlDocument(); 

    //Load the XML File 
    xDoc.Load("D137506.xml"); //<!-- This is the exact same XML file in the link above (PasteBin) 

    //Create a NodeList that gathers every "Row" from a "VariantData Type='eContact'" Node 
    XmlNodeList xmlList = xDoc.SelectNodes("System/Components/Component/VariantData[@Type='eContact']/Row"); 

    <table> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>Value</th> 
       <th>Description</th> 
      </tr> 
     </thead> 
     <tbody> 

      @{ 
       foreach (XmlNode x in xmlList) 
       { 
        eContactName = Convert.ToString(x.Attributes["Name"].Value); 
        eContactValue = Convert.ToString(x.Attributes["Value"].Value); 
        eContactDescription = Convert.ToString(x.Attributes["Description"].Value); 

        <tr> 
         <td>@eContactName</td> 
         <td>@eContactValue</td> 
         <td>@eContactDescription</td> 
        </tr> 
       } 
      } 
     </tbody> 
    </table> 
} 

enter image description here

+0

訂購過程如何?鑑於您的XML,我不希望systemairflowdirection位居前列。你也在做客戶端的東西嗎?這可能是一個造型故障? –

+1

請確保您正在閱讀提供的XML,方法是更改​​其中一個顯示的值,並查看它是否反映在您的頁面上。它可能仍然是你正在閱讀的XML文件混淆。 –

+0

@ nl-x我相信你是對的。我只是把我的XML文件放在我的解決方案資源管理器(D137506.xml)的根目錄下。爲了測試這個,我將文件重命名爲D137506a.xml,並且我在代碼中做了同樣的事情,現在它找不到該文件。我該如何引用該文件? – bagofmilk

回答

1

您正在閱讀不同的文件比你所想。

使用Directory.GetCurrentDirectory來檢查實際目錄是什麼,您的應用程序正在尋找。並使用Directory.SetCurrentDirectory或絕對或相對路徑來指定在哪裏看。

0

感謝您的完整代碼。也許我錯過了什麼。我試了一下,似乎一切正常。您是否已經通過它來確定運行時缺失值的常見分母?下面

是我的結果:

enter image description here

+0

請考慮將此鏈接放入pastebin鏈接。這不是一個答案 –

+0

它仍然有幫助。我發現項目的順序也是不同的,這很奇怪。我已經仔細檢查了XML和代碼...我不知道你的可以如此與我的不同 – bagofmilk

+0

Thanks @ nl-x我會這麼做的。 :) – BenGalluzzo