2010-08-13 60 views
0

我正在使用VS 2008.我必須創建一個wcf服務,並且在服務內部,我必須對使用LINQ to XML的xml文件執行一些基本操作。我必須在IIS 7.0中託管服務並使用它。WCF服務中的LINQ到XML

由於LINQ的一部分到XML我必須執行以下任務:

  1. 發現在所有調查的所有問題的答案是沒有
  2. 修改查詢ID的問題和答案=」 Enquiry2"

粘貼下面是XML文件

<b:ServeySet xmlns:b="b:urn:schemas-microsoft-com"> 
    <b:Enquires> 
    <b:Enquiry id="Enquiry1"> 
     <b:Question id="1" question="is the summer hot in LA?" answer="yes"/> 
     <b:Question id="3" question="is this hard exercise?" answer="no"/> 
     <b:Question id="2" question="is this awesome?" answer="yes"/> 
    </b:Enquiry > 
    <b:Enquiry id="Enquiry2"> 
     <b:Question id="1" question="what is SFO?" answer="City"/> 
     <b:Question id="2" question="is this hard exercise?" answer="no"/> 
    </b:Enquiry > 
    </b:Enquires> 
</b:ServeySet> 
+0

請刪除這些評論。您只需在編輯器中選擇XML並按下Control-K即可。 – 2010-08-13 02:31:58

+0

這是一個以上的問題。你應該分別詢問每一個。 – 2010-08-13 02:33:10

+1

好的,很好的編輯。現在,如果這不是WCF服務的一部分,爲什麼答案會不同呢?這只是一個正常的LINQ to XML問題。您將在Web服務中使用它的事實不相關。 – 2010-08-13 02:49:20

回答

2

試試升ike this:

static void Main(string[] args) 
{ 
    // create the XDocument and load the file from disk 
    XDocument doc = XDocument.Load("youroriginalfile.xml"); 

    // define the XML namespace used 
    XNamespace b = "b:urn:schemas-microsoft-com:billing-data"; 

    // get all the questions where the answer is "no" 
    var questionsWithAnswerNo = doc.Descendants(b + "Question").Where(x => x.Attribute("answer").Value == "no"); 

    // loop over these questions and do something..... 
    foreach (XElement question in questionsWithAnswerNo) 
    { 
     // do something 
    } 

    // find questions for test with "test2" id 
    var test2 = doc.Descendants(b + "Test").Where(x => x.Attribute("id").Value == "test2").FirstOrDefault(); 

    if(test2 != null) 
    { 
     // loop over questions, prepend a "TEST2: " to both question and 
     // answer attribute of each of the questions 
     foreach (XElement q2 in test2.Descendants(b + "Question")) 
     { 
      a2.Attribute("question").Value = "Test2: " + a2.Attribute("question").Value; 
      a2.Attribute("answer").Value = "Test2: " + a2.Attribute("answer").Value; 
     } 

     // save the modified file 
     doc.Save("newfile.xml"); 
    }