c# - 如何读取结构未知的 XML

标签 c# xml

我正在为学校作业编写 XML 查看器,但我不知道如何在不知道文件结构的情况下加载 XML 文件。
读取文件后,我将在列表框中显示 XML 结构。

这是一项学校作业,结果应该是这样的: XML Viewer

我有一个可以完美加载的示例文件,但我遇到了一个随机文件。

XmlDocument doc = new XmlDocument();
using(XmlReader xmlReader = XmlReader.Create("c:\\temp\\sites.xml"))
{          
   //Load file
   doc.Load(xmlReader);
   XmlNode root = doc.DocumentElement;

   foreach (XmlNode siteNode in root)
   {
      //Nodes
      XmlNode URLNode = siteNode.FirstChild;
      XmlNode EmailNode = siteNode.LastChild;

      //Create site
      Site site = new Site(URLNode.FirstChild.Value, EmailNode.FirstChild.Value);

      //Add to list
      sites.Add(site);
  }
  Console.WriteLine(sites.Count);
}

最佳答案

如果不了解结构,您将无法将 XML 数据转换为已知类(例如您的 Site)类,因为您需要某种方法来迁移数据到类构造函数参数/属性/等。

也就是说,如果您只想查看或检查 XML 文件本身,您可以递归地检查根元素内的 XmlNode 元素。

XmlNode包括执行此操作所需的所有属性,例如 ChildNodes , Attributes , 和 Value .

关于c# - 如何读取结构未知的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7908053/

相关文章:

Java:给定一个文件名列表,确保相应的 XML 仅包含有关这些文件的信息

python - 为什么 BeautifulSoup 无法正确读取/解析此 RSS (XML) 文档?

java.lang.ClassCastException :Error

c# - 如何获取字典中的键列表?

c# - Entity Framework 返回两个表连接的 IQueryable

c# - 如何在 Linq-to-SQL 实体类中创建自定义属性?

xml - 体面的 KDE XML 查看器?

c# - 如何在.NET Core中的自定义内容赘述格式化程序中正常抛出异常

C#:用于创建委托(delegate)列表的不那么难看的语法?

xml - 指定超过 1 个 Xml 根属性