[英]How to use long path in XmlDocument.Load()?
我有很長很長的路
var path = "\\?\C:\long\paht\to\file\myxml.xml"
我試圖閱讀它:
var xmlDoc = new XmlDocument();
xmlDoc.Load(path);
並在這里獲得例外:
system.uriformatexception invalid uri the hostname could not be parsed
其他一切都適用於長路徑,但XmlDocument.Load()
沒有。 我應該在這里做什么? 在常規 stream 中打開文件並使用xmlDoc.Load(stream)
?
為了回答您的問題,我會參考Microsoft 文章,其中說明了您必須滿足的 2 個先決條件,以便從版本 1607 開始在 Windows 10上啟用長路徑。 假設您已經完成了這些額外的必需設置,那么很可能有一個選項是 XmlDocument 的 Load 方法的底層實現中當前缺少的支持。
我已經在環境定位.Net 4.6.2+ 中完成了相同的測試,它不需要應用程序配置文件中的任何其他配置(否則將需要):
var path = @"\\?\C:\long\paht\to\file\myxml.xml";
var xmlDoc = new System.Xml.XmlDocument();
//xmlDoc.Load(path); => it breaks as you have seen
// avoid exception check for brevity
FileStream fs = File.Open(path, FileMode.Open);
xmlDoc.Load(fs);
這樣,您應該能夠讀取您需要的文件,並且通過良好的代碼管理,刪除當前所需的不必要的中間通道。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.