C# 文件上载到load.XML
我之前使用以下方法加载XML文件:C# 文件上载到load.XML,c#,.net,linq-to-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)
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());
}
在您的两个示例中,
Root
和Root
的大写字母不同。这是故意的吗?像这样?访问(doc.DocumentElement);它说它有一些无效参数…是的,XmlDocument中没有root属性,但DocumentElement将表示XML的实际根。访问方法的签名是什么,它接收的对象的类型是什么??公共静态无效访问(XElement元素)在传递XmlDocument之前,需要将XmlElement从XmlDocument转换为XElement。我将用代码更新答案以转换它。给我几分钟
Visit(ToXElement(doc.DocumentElement));