如何随机化XML元素

时间:2015-12-01 10:41:29

标签: c# asp.net xml

我有这样的XML:

<Configuration>
    <Elements>
        <SubElement1></SubElement1>
        <SubElement2></SubElement2>
        <SubElement3></SubElement3>
    </Elements>
</Configuration>

现在每次读取XML时,我都希望随机更改SubElements的顺序,如下所述。

<Configuration>
    <Elements>
        <SubElement2></SubElement2>
        <SubElement1></SubElement1>
        <SubElement3></SubElement3>
    </Elements>
</Configuration>

但是我找不到可能的解决方案

1 个答案:

答案 0 :(得分:2)

你可以像这样随机化xml。

public class Xml
{
    public static string XmlString = @"<Configuration>
<Elements>
    <SubElement1></SubElement1>
    <SubElement2></SubElement2>
    <SubElement3></SubElement3>
</Elements>
</Configuration>";

    public static XDocument Randomize()
    {
        //rather keep a static random if u can
        var rand = new Random();

        var xdoc = XDocument.Parse(XmlString);
        var ele = xdoc.Root.Element("Elements");

        var shuffle = new XElement("Elements", ele.Elements().OrderBy(x => rand.Next()));

        ele.ReplaceWith(shuffle);
        return xdoc;
    }
}