c# - FileUpload 加载 .XML

标签 c# .net linq-to-xml

我之前使用以下方式加载 XML 文件:

        XDocument doc = XDocument.Load("File.xml");
        Visit(doc.Root);

现在我想使用 FileUpload 框加载文件:

        XmlDocument doc = new XmlDocument();
        doc.Load(FileUpload1.FileContent);
        Visit(doc.root);

但现在我在 "(doc.root)"上遇到错误。它说“不包含'Root'的定义并且没有扩展方法'Root'接受第一个参数类型”。我做错了什么?

最佳答案

那是因为 XmlDocument 没有根属性; XmlDocument 的根由对象的 DocumentElement 属性表示,在您的情况下:doc.DocumentElement 并且由于您的方法接收 XElement 参数作为输入,因此您需要先将 XmlElement 转换为 XElement将其传递给您的 Visit() 方法。使用下面的函数来完成它。

  /// <summary>  
  /// Converts an XmlElement to an XElement.  
  /// </summary>  
  /// <param name="xmlelement">The XmlElement to convert.</param>  
  /// <returns>The equivalent XElement.</returns>  
  public static XElement ToXElement(XmlElement xmlelement)  
  {    
     return XElement.Load(xmlelement.CreateNavigator().ReadSubtree());  
  }

然后试试这样调用:

  Visit(ToXElement(doc.DocumentElement));

关于c# - FileUpload 加载 .XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8903538/

相关文章:

c# - 学习 DLR(如何在其上实现一种语言)

c# - 寻找最小值时避免魔数(Magic Number)

c# - 有一个待处理的异步操作,并且只能同时处理一个异步操作

c# - 读取 XML 中的下一个节点 (Linq to XML C#)

c# - 围绕现有 XDocument 包装附加元素

c# - 字符串实习。编译器怎么知道的?

c# - 如何使用 PrintServer 类和 PrintQueue 类控制 PrintServer 上的所有打印作业

.net - ASP.NET:禁用单个 aspx 页面(自定义错误页面)的身份验证?

c# - 通过处理 NC_HITTEST 在移动控件时设置 SizeAll 光标

c# - 为什么 i.Parent.ReplaceWith(i) 不抛出异常?