xml - 如何将 xml 文件添加到我的解决方案并将文件路径作为字符串获取
问题描述
我需要将 .xml 文件(作为测试表)添加到我的 VB.NET 测验项目中,然后将它们作为 string 引用。知道确切的文件路径很重要,因为在文件名中有一些属性,如类别和测试编号,在开始测验之前选择用户在运行时设置。这工作正常,但我的解决方案无法访问没有路径的文件。当我将文件添加为资源时,程序将文件作为字符串读取,而不是只带回路径。我怎样才能做到这一点?
解决方案
请执行下列操作:
• 添加文件:Right-click on Solution- Add-New Item...
• 然后转到每个文件的属性(Right-click on file-Properties或选择文件并转到Properties窗格)并选择Copy always(或Copy if newer)。
• 您也可以首先在解决方案资源管理器中选择所有文件并转到“属性”来设置所有文件的属性。
更新
假设您有以下项目结构:
如您所见,您consumers.xml
在解决方案的根文件夹中有addresses.xml
文件,在子文件夹中有data
文件。当您构建应用程序时,文件的位置将保留在解决方案资源管理器中:consumers.xml
将与您的 EXE 文件位于同一文件夹中,并且data
将在其中创建包含addresses.xml
文件的子文件夹。有了这样的布局,你可以使用下面的方法来加载它们。在我的示例中,我使用XElement类。
消费者.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<consumers>
<consumer>
<name>Steve</name>
<age>19</age>
</consumer>
<consumer>
<name>Mike</name>
<age>23</age>
</consumer>
</consumers>
地址.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<addresses>
<address>address1</address>
<address>address2</address>
<address>address3</address>
<address>address4</address>
</addresses>
C#
static void Main(string[] args)
{
// Load consumers
var consumers = XElement.Load("consumers.xml");
// Load addresses
var addresses = XElement.Load("data/addresses.xml");
// Query XMLs
foreach (var consumer in consumers.Elements("consumer"))
{
WriteLine($"Name: {consumer.Element("name").Value}, Age: {consumer.Element("age")}");
}
foreach (var address in addresses.Elements("address"))
{
WriteLine($"Address: {address.Value}");
}
}
VB
Sub Main()
'// Load consumers
Dim consumers = XElement.Load("consumers.xml")
'// Load addresses
Dim addresses = XElement.Load("data/addresses.xml")
'// Query XMLs
For Each consumer In consumers.<consumer>
WriteLine($"Name: {consumer.Element("name").Value}, Age: {consumer.Element("age")}")
'// Or:
'// WriteLine($"Name: {consumer.<name>(0).Value}, Age: {consumer.<age>(0).Value}")
Next
For Each address In addresses.<address>
WriteLine($"Address: {address.Value}")
Next
End Sub
推荐阅读
- javascript - 如何在 JS 中映射数组
- macos - 詹金斯拨打 unix /var/run/docker.sock: connect: permission denied MacOS
- windows - 从 admin cmd/powershell 安装的软件包未添加到常规 cmd/powershell 的 PATH(无法识别 foo...)
- flutter - 从颤振发送一个信号通知
- bash - 如何知道 SSH 密钥的长度和类型?
- ruby-on-rails - 在 rspec 测试期间,超出范围错误,Type::Integer
- angular - 我不知道是什么在路由中不断崩溃
- asp.net - 将访问令牌从一个网站传递到另一个网站
- asp.net-core - 无法让 Odata 7.1 在 web api (.net core 2.2) 中工作
- android - 如何修复Android中的android资源链接失败错误