Что-то вроде этого должно делать это жестко, при условии, что match:recursive-dirs
является действительным xml (я не знаю).Поскольку вы говорите о строках списка, мне нужно будет увидеть их формат для работы с оператором LINQ.
XElement xml = new XElement("eccu",
new XElement("match:recursive-dirs",
new XAttribute("value", "store"),
new XElement("match:recursive-dirs",
new XAttribute("value", "images"),
new XElement("revalidate", "now")
)
)
)
);
на основе HookedOnLink.com
Редактировать на основе комментариев
Это не так красиво, но
string text = "http://www.someurl.com/dir1/di2/images";
var dirs = (new Uri( text )).Segments
.Select( dir => dir.Replace( "/", String.Empty ) )
.Where( dir => !String.IsNullOrWhiteSpace( dir ) )
.ToList( );
var x = new XDocument(
new XDeclaration( "1.0", null, null ),
new XElement( "eccu" ) );
var eccu = x.Elements( ).First( );
XElement current = eccu;
foreach( var dir in dirs )
{
XElement newXElement = new XElement( "recursive-dirs",
new XAttribute( "value", dir ) );
current.Add( newXElement );
current = newXElement;
}
current.Add( new XElement( "revalidate", "now" ) );
Console.Out.WriteLine( x.ToString());
производит
<eccu>
<recursive-dirs value="dir1">
<recursive-dirs value="di2">
<recursive-dirs value="images">
<revalidate>now</revalidate>
</recursive-dirs>
</recursive-dirs>
</recursive-dirs>
</eccu>