我能';t写入包含文件路径的XML字符串,c#Net 3.5
我得到了一个包含简单XML结构的文件,为了对XML进行操作,我在framework 3.5中使用了类bulit,对于不包含反斜杠的字符串,一切正常,但如果我尝试编写包含反斜杠的字符串,最终文件不会保存到磁盘上,没有异常或任何错误。无论我是以parrameter还是节点值的形式编写,我甚至尝试用“\\”替换“\”,但都没有成功。我做错了什么 要创建节点,我使用以下代码我能';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
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”之类的?是否将文件保存到网络驱动器/共享??