Есть Kml файл вида:
Код: Выделить всё
<Placemark>
<name>сельское поселение</name>
<Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
<ExtendedData><SchemaData schemaUrl="#boundary">
<SimpleData name="Name">сельское поселение</SimpleData>
<SimpleData name="OSM_ID">-1848657</SimpleData>
<SimpleData name="ADMIN_LVL">8</SimpleData>
</SchemaData></ExtendedData>
<MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>35.4913424,56.2869627 35.4866097,56.2876573 35.4835114,56.2879249 35.4866098,56.2876573 35.4913424,56.2869627</coordinates></LinearRing></outerBoundaryIs></Polygon><Polygon><outerBoundaryIs><LinearRing><coordinates>35.389971680241118,56.234632701458445 35.3899716,56.2346327 35.3854169,56.2349689 35.389971680241118,56.234632701458445</coordinates></LinearRing></outerBoundaryIs></Polygon><Polygon><outerBoundaryIs><LinearRing><coordinates>35.37138496178531,56.235423204282533 35.3713849,56.2354232 35.3704766,56.235525 35.37138496178531,56.235423204282533</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry>
</Placemark>
ну и так далее...Нужно написать регулярное выражение чтобы найти все такие блоки. С регулярными выражениями очень туго
Нужно вытащить все данные (Name, OSM_ID, ADMIN_LVL, Coordinates). Но на данный момент я не могу даже вытащить только .Пробовал так:
Код:
Код: Выделить всё
string textOfFile = System.IO.File.ReadAllText(@"boundary.kml");
Regex r = new Regex(@"<Placemark>\d\D*</Placemark>");
MatchCollection matches = r.Matches(textOfFile);но ничего не находит.
Попробовал немного иначе:
Код:
Код: Выделить всё
Regex r = new Regex(@"<Placemark>([\s\S]*)</Placemark>");Находит одно совпадение! Я так понимаю между первым открытием тега и последним закрытием!
Прошу вашей помощи, подскажите как сделать на первом уровне, далее, думаю, сам разберусь.
Спасибо!