如何将IEnumerable <xelement>转换为字符串

时间:2016-03-28 10:45:55

标签: c# asp.net xml-parsing

我有一个包含一些我想要操作的数据的String,所以我将它发送给执行此操作的函数。

我想在函数中进行操作后返回该字符串。

我设法做的是在操作后从包含正确内容的函数返回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()设置一些额外数据之后

2 个答案:

答案 0 :(得分:2)

也许

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

为了它的价值我只会返回元素 - 这样功能只会做一件事,修改元素。然后,如果调用者需要一个字符串,它可以将元素转换为字符串。

答案 1 :(得分:0)

尝试以下选项: 如果内容是文本,则获取元素的内容:

xmlElements.Value

以XML格式获取元素的内容:

xmlElements.InnerXml

以XML格式获取元素及其内容:

xmlElements.OuterXml