Saturday, 15 March 2014

c# - Read XDocument same name elements using foreach -



c# - Read XDocument same name elements using foreach -

i have xml file:

<encounter type="type1"> <strings> <text>text1</text> <text>text2</text> <text>text3</text> </strings> </encounter>

idea set values of text elements list if "type" attribute correct. code is:

foreach (xelement el in xdoc.root.elements()) { if(el.attribute("type").value == choice) { list<string> textstrings = new list<string>(); foreach (xelement elstr in el.element("strings")) { textstrings.add(elstr.element("text").value); } break; } }

part attribute working, read several elements wits same name tricky me.

you need foreach:

foreach (xelement elstr in el.element("strings")) { foreach(xelement eltext in elstr.elements("text")) { textstrings.add((string)eltext); } }

or create more clear:

list<string> textstrings = xdoc.root .elements() .first(x => (string)x.attribute("type") == choice) .element("strings") .elements("text"). .select(t => (string)t) .tolist();

c# xml foreach linq-to-xml

No comments:

Post a Comment