Итак, я сделал кое-что, чтобы получить все элементы многоугольника в файле XML и затем нарисовать многоугольники, но когда я нарисовал их, я понял, что мне не хватает многих элементов многоугольников.
Код Я использую, чтобы получить элементы многоугольника
List<XElement> hs1 = doc.Descendants("signal")
.Where(x => (x.Element("contactref") != null) && (x.Element("contactref")
.Attribute("element") != null) && ((string)x.Attribute("name") != "EPD_PWR") && ((string)x.Element("contactref")
.Attribute("element") == "HS1") && x.Element("polygon") != null)
.Select(x => x.Element("polygon")).ToList(); .Select(x => x.Element("polygon")).ToList();
Затем я делаю foreach и прочее, чтобы получить все элементы вершины внутри многоугольника.
foreach (XElement item in hs1)
{
int counter = 0;
List<string> vx = new List<string>(), vy = new List<string>();
if (item != null)
{
foreach (XElement vert in item.Elements())
{
vx.Add(vert.Attribute("x").Value.ToString());
vy.Add(vert.Attribute("y").Value.ToString());
counter++;
}//Foreach
}//IF
points = new PointF[counter];
for (int i = 0; i < vx.Count; i++)
{
points[i].Y = (float.Parse(vx[i].Replace(".", ",")) * 10) / 2;
points[i].X = (float.Parse(vy[i].Replace(".", ",")) * 10);
}//For
Это работает нормально, но потом я Я понял, что получаю только потомственный элемент многоугольника у потомков, а не у всех, потому что у некоторых потомков больше одного элемента многоугольника. т.е.
<signals>
<signal name="N$1">
<contactref element="HS1" pad="1"/>
<polygon width="0.05" layer="1">
<vertex x="0" y="0"/>
<vertex x="83" y="0"/>
...
</polygon>
</signal>
<signal name="N$2">
<contactref element="HS1" pad="2"/>
<polygon width="0.05" layer="1">
<vertex x="33.638" y="8.084"/>
<vertex x="33.571" y="7.927"/>
...
</polygon>
<polygon width="0.05" layer="1">
<vertex x="21.496" y="23.739"/>
<vertex x="21.607" y="23.604"/>
</polygon>
</signal>
</signals>
Так что в приведенном выше примере XML я хочу получить ВСЕ "полигональные" элементы в "сигнале", но я получаю только первый с моим кодом.
Где это идет не так? В моем do c .descendants или это в моих циклах foreach?
Заранее спасибо