如何从文件中获取XML数据 [英] How do I get XML data from a file

查看:104
本文介绍了如何从文件中获取XML数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

获取错误:

 System.Xml.dll中出现System.IO.DirectoryNotFoundException类型的异常,但未在用户代码$ b中处理
$ b附加信息:找不到路径'C:\Program Files(x86)\IIS Express \〜\Default.aspx'的一部分。

  protected   void  Button1_Click( object  sender,System.EventArgs e)
{
XmlDocument doc1 = new XmlDocument();
doc1.Load( 〜/ Default.aspx);
XmlElement root = doc1.DocumentElement;
XmlNodeList节点= root.SelectNodes( / xml / xml1.xml);

foreach (节点中的XmlNode节点
{
string temp1 = node [ field1]的innerText。
string temp2 = node [ field2 ]的innerText。
string temp3 = node [ field3 ]的innerText。

Label1.Text = temp1;
Label2.Text = temp2;
Label3.Text = temp3;
}



~ / xml / xml1.xml

 <?  xml     version   =  1.0   编码  =  utf-8    >  
< 排序 >
< sort >
< field1 > 11 < / field1 >
< field2 > 22 < / field2 >
< field3 > 33 < / field3 >
< / sort >
< / sorts >

解决方案

试试这个:

 受保护  void  Button1_Click( object  sender,EventArgs e)
{
XmlDocument doc1 = new XmlDocument();
doc1.Load(Server.MapPath( 〜/ xml / xml1.xml) );

foreach (XmlNode fieldNode in doc1.SelectSingleNode( / sorts / sort)。ChildNodes)
{
switch (fieldNode.Name)
{
case field1
Label1.Text = fieldNode.InnerText;
break ;
case field2
Label2.Text = fieldNode.InnerText;
break ;
case field3
Label3.Text = fieldNode.InnerText;
break ;
}
}
}


第一步是提供正在尝试的文件的正确路径打开。

找不到路径'C:\Program Files(x86)\IIS Express \〜\Default.aspx'<的一部分/ pre> 

不够明确吗?


XmlDocument 不了解ASP.NET的应用程序相对URL。您需要将完整的物理路径传递给 Load 方法。



您还需要指定XML文件的路径,而不是 Default.aspx 文件的路径。



您还需要为选择方法提供正确的XPath表达式。

  string  physicalPath = Server.MapPath( 〜/ XML / xml1.xml); 
doc1.Load(physicalPath);

XmlElement root = doc1.DocumentElement;
XmlNodeList节点= root.SelectNodes( / sorts / sort);


Getting an error:

An exception of type 'System.IO.DirectoryNotFoundException' occurred in System.Xml.dll but was not handled in user code

Additional information: Could not find a part of the path 'C:\Program Files (x86)\IIS Express\~\Default.aspx'.

protected void Button1_Click(object sender, System.EventArgs e)
{
    XmlDocument doc1 = new XmlDocument();
    doc1.Load("~/Default.aspx");
    XmlElement root = doc1.DocumentElement;
    XmlNodeList nodes = root.SelectNodes("/xml/xml1.xml");

    foreach (XmlNode node in nodes)
    {
        string temp1 = node["field1"].InnerText;
        string temp2 = node["field2"].InnerText;
        string temp3 = node["field3"].InnerText;

        Label1.Text = temp1;
        Label2.Text = temp2;
        Label3.Text = temp3;
    }


~/xml/xml1.xml

<?xml version="1.0" encoding="utf-8" ?>
<sorts>
  <sort>
    <field1>11</field1>
    <field2>22</field2>
    <field3>33</field3>
  </sort>
</sorts>

解决方案

Try this:

protected void Button1_Click(object sender, EventArgs e)
{
    XmlDocument doc1 = new XmlDocument();
    doc1.Load(Server.MapPath("~/xml/xml1.xml"));

    foreach (XmlNode fieldNode in doc1.SelectSingleNode("/sorts/sort").ChildNodes)
    {
        switch (fieldNode.Name)
        {
            case "field1":
                Label1.Text = fieldNode.InnerText;
                break;
            case "field2":
                Label2.Text = fieldNode.InnerText;
                break;
            case "field3":
                Label3.Text = fieldNode.InnerText;
                break;
        }
    }
}


The first step would be to provide a correct path to the file you are trying to open.

Could not find a part of the path 'C:\Program Files (x86)\IIS Express\~\Default.aspx'


Isn't that explicit enough?


The XmlDocument doesn't know about ASP.NET's app-relative URLs. You need to pass the full physical path to the Load method.

You also need to specify the path to your XML file, not the path to your Default.aspx file.

You also need to provide the correct XPath expression to the Select method.

string physicalPath = Server.MapPath("~/xml/xml1.xml");
doc1.Load(physicalPath);

XmlElement root = doc1.DocumentElement;
XmlNodeList nodes = root.SelectNodes("/sorts/sort");


这篇关于如何从文件中获取XML数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆