2017-07-27 23 views
-1

我創建的,看起來像這樣一個XML文件.csv報告:IF語句困境

<Registration> 
    <REGISTRATIONID>1</REGISTRATIONID> 
    <TYPE>2</TYPE> 
</Registration> 
<Registration> 
    <REGISTRATIONID>2</REGISTRATIONID> 
    <TYPE>3</TYPE> 
</Registration> 

我怎樣才能得到與值的字符串「真」,如果在XML文件中存在的<Registration>標記中至少有一個,如果沒有則爲「FALSE」。

對於僅僅讓每個<REGISTRATIONID>的價值,我會做這個

string type = ""; 

foreach (CGXML.RegistrationRow rr in fisier.Registration) 
{ 
    type = rr.TYPE.ToString 
    sout.WriteLine(string.Concat(new string[] { "\"", type, "\"" })); 
} 

但不幸的是我目前的技能,我無法做甚至每個 <REGISTRATIONID>的「TRUE/FALSE」語句它的工作。 ..

所以,這個代碼,或者我應該從哪裏開始閱讀來學習/理解這將是巨大的幫助。

謝謝你的時間。

回答

1

歡迎來到Stack Overflow!

首先你的xml是無效的。如果您發佈的問題需要提供足夠的信息,以便用戶可以使用這些信息來複制您的方案。

無論如何想象這是你的文件:

<?xml version="1.0"?> 
<stuff> 
    <Registration> 
     <REGISTRATIONID>1</REGISTRATIONID> 
     <TYPE>2</TYPE> 
    </Registration> 
    <Registration> 
     <REGISTRATIONID>2</REGISTRATIONID> 
     <TYPE>3</TYPE> 
    </Registration> 
</stuff> 

這裏是你怎麼會看它。我正在根據TYPE節點的值決定真假。您可以使用代碼爲另一個節點執行此操作。您可以使用Linq來減少代碼,但爲了清晰起見,我保持簡單。這裏是將返回包含字符串中的方法「真」,如果任何TYPE節點具有2或3中的整個文件:

public static String SearchFile(string path) 
{ 
    var document = XDocument.Parse(File.ReadAllText(path)); 

    foreach (var thisRegistration in document.Element("stuff").Elements("Registration")) 
    { 
     var typeValue = thisRegistration.Element("TYPE").Value; 
     if (typeValue == "2" || 
      typeValue == "3") 
     { 
      return "True"; 
     } 
    } 

    return "False"; 
} 

下面是如何使用的代碼:

var answer = SearchFile("PathToYourFile.xml"); // Replace with your filepath 
Console.WriteLine("Answer: {0}", answer); 
+0

等效LINQ版本SearchFile函數應該類似於:'XDocument.Parse(File.ReadAllText(path))。Element(「stuff」)。Elements(「Registration」)。選擇(e => e.Element(「TYPE」)。 ).Any(type => type ==「2」|| type ==「3」)? 「真」:「假」;' – Kedrzu