如果我理解正确,我猜你需要改变你的leerXML()方法。 它将打印名称就像您输入的原点。 请在需要的地方添加空引用检查。
public void leerXML() { Console.WriteLine("Enter the airline you wish to search: "); string name; name = Console.ReadLine().ToUpper(); if (!String.IsNullOrEmpty(name)) { XElement info = XElement.Load(@"C:\Users\thoma\Documents\Visual Studio 2019\Backup Files\data.xml"); var airlines = info.XPathSelectElements("airline"); foreach (XElement el in airlines) { if (!String.IsNullOrEmpty(el.Element("name").Value) && ((string)el.Element("name").Value).IndexOf(name) >= 0) { Console.WriteLine((string) el.Element("origin").Value); } } } } static void Main(string[] args) { XMLReader xmlReader = new XMLReader() xmlReader.leerXML(); Console.ReadLine(); }
public static void ReadXmlFile() { XDocument doc = XDocument.Load(@"xmlfiledados.xml"); XElement element = doc.Element("airlines").Descendants("airline").Where(a => a.Element("name").Value.Equals("HK Express")).First(); Console.WriteLine(element.Element("name").Value); Console.WriteLine(element.Element("origin").Value); Console.WriteLine(element.Element("destination").Value); Console.WriteLine(element.Element("date").Value); }
一种方法:
首先将construcror添加到类XMLReader,所以它看起来像这样:
public class XMLReader { public XMLReader() { } public List<airlines> leerXML() { Console.WriteLine("Enter the airline you wish to search: "); string name; name= Console.ReadLine().ToUpper(); if (nombre == "V"){ XElement info = XElement.Load(@"C:\Users\thoma\Documents\Visual Studio 2019\Backup Files\data.xml"); IEnumerable<XElement> airlines = from el in info.Elements("airline") where (string)el.Element("name") == "HK" select el; foreach (XElement el in airlines) Console.WriteLine((string)el.Attribute("origin")); } return null; } }
你已经在leerXML()中打印xml了 只需在你的Main中调用它(string [] args)
static void Main(string[] args) { XMLReader xmlReader = new XMLReader() xmlReader.leerXML(); Console.ReadLine(); }
而已。