SelectNodes и SelectSingleNode всегда возвращают ноль (C#) - PullRequest
0 голосов
/ 26 марта 2020

У меня были некоторые проблемы с использованием SelectNodes и SelectSingleNode, потому что они, кажется, всегда возвращали ноль. Вот код, который я использовал:

DialogResult openFDexec = openFileDialog1.ShowDialog();
if (openFDexec == DialogResult.OK)
{
    filePath = openFileDialog1.FileName;
    var fileStream = openFileDialog1.OpenFile();
    using (StreamReader reader = new StreamReader(fileStream))
    {

    }
}

XmlDocument doc = new XmlDocument();

doc.Load(filePath);

XmlNodeList transaction = doc.SelectNodes("bookstore/book/title");

Console.WriteLine(transaction.Count);

Пример XML, который я использовал, взят с сайта Microsoft:

<?xml version='1.0'?>  
<bookstore xmlns="urn:newbooks-schema">  
  <book genre="novel" style="hardcover">  
    <title>The Handmaid's Tale</title>  
    <author>  
      <first-name>Margaret</first-name>  
      <last-name>Atwood</last-name>  
    </author>  
    <price>19.95</price>  
  </book>  
  <book genre="novel" style="other">  
    <title>The Poisonwood Bible</title>  
    <author>  
      <first-name>Barbara</first-name>  
      <last-name>Kingsolver</last-name>  
    </author>  
    <price>11.99</price>  
  </book>  
  <book genre="novel" style="paperback">  
    <title>The Bean Trees</title>  
    <author>  
      <first-name>Barbara</first-name>  
      <last-name>Kingsolver</last-name>  
    </author>  
    <price>5.99</price>  
  </book>  
</bookstore>    

1 Ответ

0 голосов
/ 26 марта 2020

возможно, вы пропустили / до "книжный магазин" в XmlNodeList transaction = doc.SelectNodes("bookstore/book/title");

Попробуйте с этим: XmlNodeList transaction = doc.SelectNodes("/bookstore/book/title");

Однако, здесь есть пример для функции selectNodes:

XmlDocument xml = new XmlDocument();
xml.LoadXml(myXmlString);

XmlNodeList xnList = xml.SelectNodes("/Names/Name");
foreach (XmlNode xn in xnList)
{
  string firstName = xn["FirstName"].InnerText;
  string lastName = xn["LastName"].InnerText;
  Console.WriteLine("Name: {0} {1}", firstName, lastName);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...