- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Web 编程新手,决定从 .net 4.5 切换到 .net core。
我的项目在以下位置有一个静态 xml 文档:
wwwroot/Countries/en-GB.xml
如何读取指定路径下的 xml 文件?最终我会将数据转换为 SelectList。
在 .net 4.5 中,我使用 DataSet 和 HttpConext...MapPath 来读取 xml 文档,该文档不再在核心 mvc 中工作。
非常欢迎任何建议。
最佳答案
首先不要将数据源放入 wwwroot
文件夹中,因为它是公开提供的。看看official docs :
The web root of your app is the directory in your project for public, static resources like css, js, and image files. The static files middleware will only serve files from the web root directory (and sub-directories) by default.
因此,将 Countries
文件夹移动到项目的根文件夹中。
要读取 xml 数据,可以使用 XmlSerializer
。我将尝试展示如何读取 xml 文件:
首先我假设您有如下所示的 xml 内容:
<?xml version="1.0" encoding="UTF-8" ?>
<Container>
<Countries>
<Country>
<Code>Code1</Code>
<Title>Title1</Title>
</Country>
<Country>
<Code>Code2</Code>
<Title>Title2</Title>
</Country>
</Countries>
</Container>
首先描述类型
public class Country
{
public string Code { get; set; }
public string Title { get; set; }
}
public class Container
{
public Country[] Countries { get; set; }
}
之后创建一个用于 xml 反序列化的服务:
public interface ICountryService
{
Country[] GetCountries();
}
public class CountryService : ICountryService
{
private readonly IHostingEnvironment _env;
public CountryService(IHostingEnvironment env)
{
_env = env;
}
public Country[] GetCountries()
{
XmlSerializer ser = new XmlSerializer(typeof(Container));
FileStream myFileStream = new FileStream(_env.ContentRootPath + "\\Countries\\en-GB.xml", FileMode.Open);
return ((Container)ser.Deserialize(myFileStream)).Countries;
}
}
然后在ConfigureServices
方法中注册服务:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddSingleton<ICountryService, CountryService>();
}
最后注入(inject)并在任何地方使用它(例如在 Controller 中)
public class SomeController : Controller
{
public SomeController(ICountryService countryService)
{
// use it
}
}
关于asp.net-core - 如何在MVC核心(1.0.0)中读取xml文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39552474/
我是一名优秀的程序员,十分优秀!