使用“浮动”结构在C#中解析XML并填充列表框

时间:2019-03-04 00:46:51

标签: c# .net xml xml-parsing

具有以下结构的XML文件。

<books>
    <myonlystore>
        <book1>
            <author>Book1 author</author>
            <title>Book1 Title</title>
        </book1>
        <book2>
            <author>Book2 author</author>
            <title>Book2 Title</title>
        </book2>
        <book3>
            <author>Book3 author</author>
            <title>Book3 Title</title>
            <ISBN>12345</ISBN>
        </book3>
    </myonlystore>
</books>

尝试将book1,book2和book3放入列表框中,并在选择后显示相应的可用属性。但是却与XML结构混淆了。请告知如何正确读取此文件。

谢谢

2 个答案:

答案 0 :(得分:1)

您可以像这样使用XDocumnet:

var result = XDocument.Parse(xml).Root
    .Descendants().Where(n => n.Name.LocalName.StartsWith("book"))
    .Select(b => new
    {
        Author = (string) b.Element("author"),
        Title = (string) b.Element("title"),
        Isbn = (string) b.Element("ISBN")
    });

已更新:

var result = XDocument.Parse(xml).Root.Element("myonlystore")
    .Elements()
    .Select(b => new
    {
        Author = (string) b.Element("author"),
        Title = (string) b.Element("title"),
        Isbn = (string) b.Element("ISBN")
    });

答案 1 :(得分:0)

如果用<store> <books>类别引用您的XML文件,则组织起来会更好,因此,按照以下代码列出商店中的所有书籍非常简单。

XML文件:

<myonlystore>
  <books>
    <author>Book1 author</author>
    <title>Book1 Title</title>
  </books>
  <books>
    <author>Book2 author</author>
    <title>Book2 Title</title>
  </books>
  <books>
    <author>Book3 author</author>
    <title>Book3 Title</title>
    <ISBN>12345</ISBN>
  </books>
</myonlystore>

以及读取XML文件的代码:

    public static void ReadXmlFile1()
    {
        String path = $@"{desk}\xmlfile.xml";

        XDocument doc = XDocument.Parse(XDocument.Load(path).ToString());

        foreach (XElement element in doc.Descendants("books"))
        {
            Console.WriteLine(element.Element("author").Value);
            Console.WriteLine(element.Element("title").Value);
            Console.WriteLine("-----------------");
        }
    }