我能';t写入包含文件路径的XML字符串,c#Net 3.5

我能';t写入包含文件路径的XML字符串,c#Net 3.5,c#,.net,xml,C#,.net,Xml,我得到了一个包含简单XML结构的文件,为了对XML进行操作,我在framework 3.5中使用了类bulit,对于不包含反斜杠的字符串,一切正常,但如果我尝试编写包含反斜杠的字符串,最终文件不会保存到磁盘上,没有异常或任何错误。无论我是以parrameter还是节点值的形式编写,我甚至尝试用“\\”替换“\”,但都没有成功。我做错了什么 要创建节点,我使用以下代码 public XmlElement ToXml(XmlDocument docXml){ XmlEleme

我得到了一个包含简单XML结构的文件,为了对XML进行操作,我在framework 3.5中使用了类bulit,对于不包含反斜杠的字符串,一切正常,但如果我尝试编写包含反斜杠的字符串,最终文件不会保存到磁盘上,没有异常或任何错误。无论我是以parrameter还是节点值的形式编写,我甚至尝试用“\\”替换“\”,但都没有成功。我做错了什么

要创建节点,我使用以下代码

    public XmlElement ToXml(XmlDocument docXml){
        XmlElement answer = docXml.CreateElement("datafile");
        answer.SetAttribute("name", dfName);
        answer.SetAttribute("path", dfPath);
        answer.SetAttribute("user", dfUser);
        answer.SetAttribute("pass", dfPass);
        answer.SetAttribute("defalut", isDefault.ToString().ToLower());
        return answer;
    }
提前感谢您的建议

保罗 我假设您正在尝试为名为“path”的节点设置反斜杠。你不能那样做

用于放置XML解析器应忽略的字符。

编辑:似乎“\”不是保留字符,我可以编辑现有的XML文件&如下所示

浏览器会按预期渲染它

<Employees xmlns="http://Employees">
  <Employee id="12615" title="Architect">
    <!--This is a comment-->
    <Name>
      <First>Nancy</First>
      <Middle>J.</Middle>
      <Last>Davolio</Last>
    </Name>
    <Street>507 - 20th Ave. E. Apt. 2A</Street>
    <City>Seattle</City>
    <Zip>98122</Zip>
    <Country>
      <Name test="\abc">U.S.A.\\\\</Name>
    </Country>
    <Office>5/7682</Office>
    <Phone>(206) 555-9857</Phone>
    <Photo>Photo.jpg</Photo>
  </Employee>
</Employees>

南希
J
达沃利奥
507-20大道东2A室
西雅图
98122
美国\\\\
5/7682
(206) 555-9857
Photo.jpg

有反斜杠的变量的内容是什么?

我自己也尝试过,没有任何问题:

class Program
{
    static void Main(string[] args)
    {
        // get a list of files
        string[] files = Directory.GetFiles(@"D:\backup");

        // create new XML document
        XmlDocument xdoc = new XmlDocument();

        // add a "root" node
        xdoc.AppendChild(xdoc.CreateElement("ListOfFiles"));

        foreach (string file in files)
        {
            xdoc.DocumentElement.AppendChild(CreateXmlElement(xdoc, file));                
        }

        // save file
        xdoc.Save(@"D:\filelist.xml");
    }

    private static XmlElement CreateXmlElement(XmlDocument xmldoc, string filename)
    {
        XmlElement result = xmldoc.CreateElement("datafile");

        result.SetAttribute("name", Path.GetFileName(filename));
        result.SetAttribute("path", Path.GetDirectoryName(filename));
        result.SetAttribute("fullname", filename);

        return result;
    }
}
因此,为我提供了一个漂亮、干净的XML文件:

<ListOfFiles>
  <datafile name="mse-01-14.zip" path="D:\backup" fullname="D:\backup\mse-01-14.zip" />
  <datafile name="Vor_09.iso" path="D:\backup" fullname="D:\backup\Vor_09.iso" />
</ListOfFiles>

一个问题也没有


马克

我删除了我的答案,并投票支持了这个答案。这似乎更符合实际问题。此外,它似乎是正确的。请张贴完整的代码。看起来您正在创建一个具有属性的节点,但可能根本没有附加它。有关如何创建节点/属性并将xml文件保存到磁盘的示例,请参见此示例-如何将xml文档保存到磁盘?你能把那个电话用try…catch块括起来吗?是否有意外发生?像“AccessDeniedException”之类的?是否将文件保存到网络驱动器/共享??