Я пытаюсь прочитать этот конкретный xml, и я получил «System.Xml.Linq.XContainer.Element (...), возвращенный ноль». ошибка.
XML
<P>
<W>
<WC>
<A>1</A>
<B>1</B>
<C>1</C>
</WC>
</W>
<Modules>
<Module Attr="ex">
<A>
<B>2</B>
<C>3</C>
<D>4</D>
<E>5</E>
<F>6</G>
<G>7</G>
</A>
</Module>
<Module Attr="ex2">
<A>
<C>3</C>
<D>4</D>
<E>5</E>
</A>
</Module>
</Modules>
<Modules>
<Module Attr="ex3">
<A>
<W>10</W>
<V>9</V>
</A>
</Module>
<Module Attr="XXXX">
<A>
<B>2</B>
<C>3</C>
<D>4</D>
<E>5</E>
<F>6</G>
<G>7</G>
</A>
</Module>
</Modules>
</P>
C #
XElement disXelement = XElement.Load($"PATH");
var modules = from module in disXelement.Element("Modules").Elements("Module")
where module.Attribute("Attr").Value == "XXXX"
select new
{
v = from s in module.Descendants()
select new
{
Ip = v.Element("F").Value,
Port = v.Element("G").Value
}
};
foreach (var item in modules)
{
foreach (var i in item.v)
{
MessageBox.Show(i.Ip);
MessageBox.Show(i.Port);
}
}
Я хотел бы получить значения F и G.
Я пробовал это:
var modules2 = disXelement.Element("Modules").Elements("Module")
.Where((module) => module.Attribute("Attr").Value == "XXXX")
.Select((module) => new
{
v= module.Descendants().Select((v) => new
{
Ip = (string)v.Elements().Where(e => e.Name.LocalName == "F").First(),
Port = (string)v.Elements().Where(e => e.Name.LocalName == "G").First()
})
});
Какая работа (получила два значения messageBox, но я получаю ошибку: System.InvalidOperationException: «Последовательность не содержит элементов» в v = module.Descendants () ...