[英]Using LINQ in VB.NET with namespaces
我有這個XML文件:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>NuSpecID</id>
<version>1.0.0</version>
<title>NuSpec Sample</title>
<authors>Jim Bob</authors>
<owners>Billy Joel</owners>
<licenseUrl>http://url.goes.here</licenseUrl>
<projectUrl>http://url.goes.there</projectUrl>
<requireLicenseAcceptance>ture</requireLicenseAcceptance>
<description>this is a sample nuget.</description>
<summary>
</metadata>
</package>
而這段代碼:
Module Module1
Sub Main()
Dim root As XElement = XElement.Load("c:\tmp\nuspec.xml")
Dim tests As IEnumerable(Of XElement) = _
From el In root.<metadata> _
Select el
For Each el As XElement In tests
Console.WriteLine(el.<id>.Value)
Next
Console.ReadKey()
End Sub
End Module
如果我取出xmlns="HTTP..."
我的代碼輸出“NuSpecID”,但我找不到一個解決方案,允許我解析/查詢這個XML仍然附加名稱空間。
我也有一些沒有命名空間或有不同名稱的文件,我如何確定是否使用一個和哪個使用?
您需要導入名稱空間以在XML文本中使用。
在模塊的頂部,放:
Imports <xmlns:ns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
然后在你的功能:
Dim tests = root.<ns:metadata>
For Each el In tests
Console.WriteLine(el.<ns:id>.Value)
Next
顯然你可以使用任何東西而不是ns
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.