现有一xml:
<?xml version="1.0" encoding="utf-8"?> <Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:build="http://schemas.microsoft.com/developer/appx/2012/build" IgnorableNamespaces="build"> <Identity Name="uytury" Publisher="hygj" Version="1.0.0.12" ProcessorArchitecture="neutral" /> <Properties> <DisplayName>jhjj</DisplayName> <PublisherDisplayName>bhhjb</PublisherDisplayName> <Logo>Assets\StoreLogo.png</Logo> </Properties> <Prerequisites> <OSMinVersion>6.2.1</OSMinVersion> <OSMaxVersionTested>6.2.1</OSMaxVersionTested> </Prerequisites> <Resources> <Resource Language="EN" /> </Resources> <Applications> <Application Id="App" Executable="gfg.exe" EntryPoint="gfg.App"> <VisualElements DisplayName="fdsf" Logo="Assets\Logo.png" SmallLogo="Assets\SmallLogo.png" Description="gfdsg" ForegroundText="light" BackgroundColor="#2672EC"> <DefaultTile ShowName="allLogos" WideLogo="Assets\WideLogo.png" ShortName="gfdsg" /> <SplashScreen Image="Assets\SplashScreen.png" BackgroundColor="#2672EC" /> <InitialRotationPreference> <Rotation Preference="portrait" /> <Rotation Preference="landscape" /> <Rotation Preference="portraitFlipped" /> <Rotation Preference="landscapeFlipped" /> </InitialRotationPreference> </VisualElements> <Extensions> <Extension Category="windows.search" /> <Extension Category="windows.shareTarget"> <ShareTarget> <DataFormat>Text</DataFormat> </ShareTarget> </Extension> </Extensions> </Application> </Applications> <build:Metadata> <build:Item Name="TargetFrameworkMoniker" Value=".NETCore,Version=v4.5" /> <build:Item Name="VisualStudio" Version="11.0" /> <build:Item Name="OperatingSystem" Version="6.2.9200.16384 (win8_rtm.120725-1247)" /> <build:Item Name="Microsoft.Build.AppxPackage.dll" Version="11.0.50727.1" /> <build:Item Name="Microsoft.Windows.UI.Xaml.Build.Tasks.dll" Version="11.0.50727.1" /> </build:Metadata> </Package>
现需要读取Application节点,艘衣贼~~于是写下如下代码:
XmlDocument doc = new XmlDocument(); doc.Load(@"file"); XmlNodeList itemList = doc.DocumentElement.SelectNodes("//Package/Applications/Application");
结果发现itemList是空的。怎么回事呢?因为该xml中包含有"xmlns"。我们在查找节点之前也得先设置下namespace:
XmlDocument doc = new XmlDocument(); XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("a", "http://schemas.microsoft.com/appx/2010/manifest"); doc.Load(@"file"); XmlNodeList itemList = doc.DocumentElement.SelectNodes("//a:Package/a:Applications/a:Application",nsmgr);
这样就没问题啦。
时间: 2024-11-13 13:33:28