首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET核心写入XML-file

.NET核心写入XML-file
EN

Stack Overflow用户
提问于 2017-01-27 04:56:44
回答 2查看 10.8K关注 0票数 5

在ASP核心,我试图添加一些.NET元素与属性到现有的.NET文件。

在ASPNET4.5中,我会使用下面的代码来实现这一点:

代码语言:javascript
复制
string path = Server.MapPath("~/Data/foo.xml");
XDocument xdoc = XDocument.Load(path);
   //Do stuff with XElement and XAttributes...
xdoc.Save(path);

但是使用ASP.NET核心,我不能使用Server.MapPath(),所以我使用IHostingEnvironment来获得完整的路径:(阅读更多here )

在.NET核心上运行下面的完整代码将导致在尝试运行“System.IO.Stream(xdoc.Save);”时出现"Cannot convert from String to pathToDataFile“。

代码语言:javascript
复制
  var contentRoot = hostingEnvironment.ContentRootPath;
  string pathToDataFile = contentRoot + "\\Data\\foo.xml";
  XDocument xdoc = XDocument.Load(pathToDataFile);
    //Do stuff with XElement and XAttributes...
  xdoc.Save(pathToDataFile);

为什么"xdoc.Save()“在ASP .NET核心中不起作用,但在.NET 4.5中却能正常工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-27 05:41:32

.NET核心中可用的API是完整.NET框架中可用API的子集。在某些领域,您会发现.NET核心中几乎包含了.NET 4.5中的几乎所有内容,但情况并不总是如此。

在您的例子中,如果您使用Visual Studio查看哪些Save方法的重载可用,您将发现以下这些重载:

代码语言:javascript
复制
public void Save(Stream stream);
public void Save(TextWriter textWriter);
public void Save(XmlWriter writer);
public void Save(Stream stream, SaveOptions options);
public void Save(TextWriter textWriter, SaveOptions options);

出现编译错误的原因现在已经很清楚了。在.NET核心中,不会重载接受定义文档应保存到的文件路径的string

您必须首先创建一个指向所需路径的可写Stream,并将该Stream传递给Save方法。您可以查看full .NET framework implementation以供参考。

票数 5
EN

Stack Overflow用户

发布于 2017-02-21 02:11:00

我也有同样的问题,FileStream为我工作。

代码语言:javascript
复制
FileStream fileStream = new FileStream("file.xml", FileMode.Create);
XmlWriterSettings settings = new XmlWriterSettings() { Indent = true};
XmlWriter writer = XmlWriter.Create(fileStream, settings);

请记住使用以下代码行来防止文件被截断。

代码语言:javascript
复制
writer.Flush();
fileStream.Flush();
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41882854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档