XDocument文件名

3

有没有一种方法可以从XDocument对象本身检索保存的路径(文件名)?

我的意思是在保存了XDocument对象之后获取保存的路径。就像这样:

XDocument xDoc = new XDocument();
xDoc.Save(@"C:\Temp\MyXmlDoc.xml");

string str = xDoc.SavedPath() // <== something like this

2
我不明白为什么你不能将完整的文件名存储在一个变量中,并在需要时使用它? - Sergey K
@Serghei:我不认为OP排除了那种机制;他们只是在询问XDocument类型是否已经处理了该机制,而不是从一开始就实现自己的解决方案。 - Jeff Yates
嗨Serghei,我想知道这个属性是否可用。我理解并接受你的建议。 - Roi Shabtai
2个回答

6
如果您从文件中加载 XDocument,则 BaseUri 属性将包含文件名。如 MSDN 所述:

有时候 XmlReader 有基本 URI,有时候则没有。例如,当从文件加载时,XmlReader 知道基本 URI,但是当从因调用 Parse 方法而创建的 XmlReader 中读取时,则无法通过 XmlReader 报告基本 URI;XML 存储在一个字符串中。

然而,在保存文档时并不设置此属性,仅在加载操作期间设置。因此,如果您需要知道保存路径,则需要在保存时独立地存储它,而不是依赖于 XDocument 实例。

2

不,XDocument并不记得它被保存的位置。

你需要自己记住路径,例如:

XDocument xDoc = new XDocument();
string str = @"C:\Temp\MyXmlDoc.xml";
xDoc.Save(str);

谢谢,我已经实现了这个解决方案。只是想知道这个属性是否存在。 - Roi Shabtai
@RoiShabtai:看一下这个:我可以为XDocument分配BaseUri吗? - dtb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接