2016-03-28 61 views
0

我有一個字符串,其中包含一些我想要操作的數據,所以我將它發送到執行此操作的函數。如何將IEnumerable <XElement>轉換爲字符串

我想在函數中操作後返回該字符串。

我設法給是從包含正確的內容,函數返回IEnumerable<XElement>後,他得到操縱

我試圖從函數返回xmlElements.ToString();,但它包含了一些奇怪的字符串,而不是實際的字符串,它的自我。

renderedOutput =在XML結構的字符串

var xml = XElement.Parse(renderedOutput); 
IEnumerable<XElement> xmlElements = xml.Descendants(); 

那麼我將它發送到該功能(即改變一些值)

xmlElements = SetAdditionalData(xmlElements, docIDs[i], i, orderID);// This is the place where i want to get a String in XML strcture 

這只是功能做什麼的例子:

public IEnumerable<XElement> SetAdditionalData(IEnumerable<XElement> xmlElements, string docID, int i, string orderID) 
{ 
    foreach (var el in xmlElements) 
    { 
     // set country name from country iso 
     if (el.Name == "Country") 
     {          
       var isoC = el.Value.ToString().Trim(); 
       if (isoC != string.Empty) 
       { 
        RegionInfo isoCode = new RegionInfo(isoC); 
        el.SetValue(isoCode.DisplayName); 
       } 
       continue;      
     } 
    } 

    return xmlElements; // tried to return xmlElements.ToSting(), but it didn't returned the right data 
} 

我試圖做到這一點:

xmlElements將包含操縱後的字符串 - 意思SetAdditionalData()後設置一些額外的數據

+0

@亨克我期待'XML字符串' –

+0

@亨克,問我提到,我正在尋找'xmlElements.ToSting()'哪些不起作用 –

回答

1

也許

return String.Concat(xmlElements.Select(element => element.OuterXml)); 

對於什麼是值得我只想返回元素 - 這種方式功能只做一件事,修改元素。然後如果調用者需要一個字符串,它可以將元素轉換爲一個字符串。 獲取元素的內容,如果內容是文本:

xmlElements.Value 

獲取元素的內容爲XML:

xmlElements.InnerXml 

獲取的元素及其含量

+0

我得到這個錯誤:''System.Collections.Generic.IEnumerable '不包含定義'Select'並且沒有擴展方法'Select'接受類型'System.Collections.Generic.IEnumerable '的第一個參數可以找到(你是否缺少using指令或程序集引用?) ' –

+3

[XElement](https://msdn.microsoft.com/en-us/library/system.xml.linq.xelement(v = vs.110).aspx)上沒有屬性OuterXml。從IEnumerable 獲取XML只需調用如下代碼:'var xml = string.Concat(xmlElements)'或'var xml = string.Join(「\ r \ n」,xmlElements)' – chviLadislav

+0

'XElement'繼承'OuterXml '來自'XmlNode'。 –

0

下面嘗試選項作爲XML:

xmlElements.OuterXml 
+0

我得到了所有這3個例子的錯誤:''System.Collections.Generic.IEnumerable '不包含'Value'的定義,並且沒有找到接受類型'System.Collections.Generic.IEnumerable '的第一個參數的擴展方法'Value'一個使用指令還是一個程序集引用?)\t' –

+0

一旦你遍歷調用者的列表,你將得到這些值。您不能直接在IEnumearble對象上獲取這些值。請回復@Scott Hannen的帖子。 – Husein

+0

將此添加到文件頂部:using System.Linq; –