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

问题描述 投票:1回答:2

拥有一个具有以下结构的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结构混淆了。请告知如何正确阅读此文件。

谢谢

c# .net xml xml-parsing
2个回答
1
投票

您可以像这样使用XDocument:

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")
    });

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("-----------------");
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.