簡體   English   中英

如何在 XmlDocument.Load() 中使用長路徑?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM