Несмотря на то, что conqenator предоставил вам код, который исправил вашу проблему, следующие причины объясняют, почему она не сработала:
Если вы не вызываете метод Read в XmlNodeReader или любом из классовкоторый происходит от XmlReader, вы всегда получите XmlNodeType.None NodeType, который является причиной ошибки.Чтобы исправить предоставленный вами код и вернуть int, код должен выглядеть следующим образом:
public int ObjectContentI(string XmlPath)
{
int result;
using(XmlNodeReader xnr = new XmlNodeReader(this.xmlr.SelectSingleNode(XmlPath))){
while(xnr.Read()){
result = xnr.ReadElementContentAsInt();
}
}
return result;
}
Обратите внимание, что XPath для получения этой работы должен измениться на /ship/health/shields
, так как ReadElementContentAsInt()
возвращает содержимое элемента и не будет работать на текстовом узле, который вы получаете при использовании /ship/health/shields/text()
.
Обратите внимание, что я также обернул XmlNodeReader в блок использования, который избавится отXmlNodeReader, как только вы закончите, чтобы освободить ресурсы.