首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#无法读取asp.net中的XML文件

C#无法读取asp.net中的XML文件
EN

Stack Overflow用户
提问于 2012-04-25 01:28:45
回答 4查看 2.4K关注 0票数 1

我正在尝试用下面的代码读取xml文件。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>

<files>
   <pdf_input infolder ="C:\Users\Lambo\Documents\Visual Studio 2010\Projects\test\test\testPdfIn"
              outfolder ="C:\Users\Lambo\Documents\Visual Studio 2010\Projects\test\test\testPdfOut"
              autonameappend="_new" />


   <word_file infolder =" C:\Users\Lambo\Documents\Visual Studio 2010\Projects\test\test\testPdfIn"
              outfolder ="C:\Users\Lambo\Documents\Visual Studio 2010\Projects\test\test\testPdfOut" />


   <pdf_file fileRequired="true" directory="" autonameappend="pdf" />


   <docx_file fileRequired="true" directory="" autonameappend="docx" />

   <!-- autonameappend: Such as: (copy) -->


   <doc_file fileRequired="true" removePicture="true" removeFormfield="true"  directory="" autonameappend="_new" />


</files>

但是有些人不能阅读它。下面是我用来读取xml文件的代码。

代码语言:javascript
复制
public static void readConfig()
{
    try
    {
     //   StreamReader sr = new StreamReader("");
        XmlTextReader reader = new XmlTextReader("~/bin/config.xml");



        reader.MoveToContent();

        reader.ReadToDescendant("pdf_input");

        pdf_infolder = reader.GetAttribute("infolder");

        pdf_outfolder = reader.GetAttribute("outfolder");

        pdf_nameAppend = reader.GetAttribute("autonameappend");

        MessageBox.Show("two passed");



        word_outfolder = reader.GetAttribute("outfolder");          

        reader.ReadToNextSibling("pdf_file");
        pdf_required = Convert.ToBoolean(reader.GetAttribute("fileRequired"));
        pdf_newDirectoryV=reader.GetAttribute("directory");
        pdf_autoName = reader.GetAttribute("autonameappend");

        MessageBox.Show("3 passed");

        reader.ReadToNextSibling("docx_file");
        docx_required = Convert.ToBoolean(reader.GetAttribute("fileRequired"));
        docx_newDirectoryV=reader.GetAttribute("directory");
        docx_autoName = reader.GetAttribute("autonameappend");

        MessageBox.Show("4 passed");

        reader.ReadToNextSibling("doc_file");
        doc_required = Convert.ToBoolean(reader.GetAttribute("fileRequired"));
        doc_removePic = Convert.ToBoolean(reader.GetAttribute("removePicture"));
        doc_removeFF = Convert.ToBoolean(reader.GetAttribute("removeFormfield"));
        doc_newDirectoryV=reader.GetAttribute("directory");
        doc_autoName = reader.GetAttribute("autonameappend");

        reader.Close();

    //   MessageBox.Show("Success");

    //   MessageBox.Show("pdf_required is :" + pdf_required + "        pdf_newdirectory is :" + pdf_newDirectoryV + "End");

    }
    catch (Exception)
    {

        MessageBox.Show("reading config file failed, using default value instead" );
        restoreDefault();
    }
}

private static void restoreDefault()
{

  //  wordName = @"C:\Users\user\Documents\Visual Studio 2010\Projects\SecureWord\SecureWord\bin\Debug\Sample3.doc";
    pdf_required = true;
    pdf_newDirectoryV = "";
    pdf_autoName = "";

    docx_required = true;
    docx_newDirectoryV = "";
    docx_autoName = "";

    doc_required = true;
    doc_removePic = true;
    doc_removeFF = true;
    doc_newDirectoryV = "";
    doc_autoName = "";

}

}

任何帮助都会非常感谢,谢谢!

EN

回答 4

Stack Overflow用户

发布于 2012-04-25 01:42:58

代码语言:javascript
复制
new XmlTextReader("~/bin/config.xml")

代字号路径(officially, "Web Application root operator"仅适用于服务器控件和其他支持ASP.NET的实用程序-不适用于需要路径的地方。

您可以使用Server.MapPath获取文件的物理位置。

代码语言:javascript
复制
new XmlTextReader(Server.MapPath("~/bin/config.xml"))
票数 4
EN

Stack Overflow用户

发布于 2012-04-25 01:43:42

您可能需要将相对ASP.NET路径转换为物理路径。参见HttpServerUtility.MapPath

代码语言:javascript
复制
XmlTextReader reader = new XmlTextReader(Server.MapPath("~/bin/config.xml"));
票数 1
EN

Stack Overflow用户

发布于 2012-04-25 01:36:38

我从来没有用过XmlTextReader,用这个代替吧,它似乎更容易使用。

代码语言:javascript
复制
XmlDocument xDoc = new XmlDocument();
        xDoc.LoadXml("~path/mydoc.xml");
        foreach (XmlNode xNode in xDoc.ChildNodes)
        {
            //Do w.e
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10302948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档