c# – 无法获取XmlDocument.SelectNodes以检索我的任何节点?

c# – 无法获取XmlDocument.SelectNodes以检索我的任何节点?,第1张

概述我试图解析 XML文档.该文件是一个AppxManifest文件. 示例文档如下所示: <?xml version="1.0" encoding="utf-8"?><Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:build="http://schemas.microsoft.com/developer/ 我试图解析 XML文档.该文件是一个AppxManifest文件.

示例文档如下所示:

<?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>

我试图解析它:

var xml=new Xmldocument();xml.Load(myfile);var mgr=new XmlnamespaceManager(xml.nametable);mgr.Addnamespace("","http://schemas.microsoft.com/appx/2010/manifest");var nodes=xml.SelectNodes("Applications");

但是,在执行此 *** 作后,节点将不会包含任何内容. xml文档被加载,并且这样.使用SelectNodes(“// *”)按预期方式返回每个节点.这里有什么问题?

我也尝试过XPath查询上的许多变体

> / Package / Applications / Application
>应用/应用
>应用/ *

没有什么可以检索单个节点.理想情况下,我希望节点包含所有的应用程序节点

解决方法 您必须专门使用xml命名空间来选择它们.考虑
"//*[local-name()='Applications']/*[local-name()='Application']"

在你的情况下,这段代码也可能很好:

var doc = new Xmldocument();        doc.LoadXml(xml);        var nsmgr = new XmlnamespaceManager(doc.nametable);        nsmgr.Addnamespace("a","http://schemas.microsoft.com/appx/2010/manifest");        var nodes = doc.SelectNodes("//a:Applications/a:Application",nsmgr);
总结

以上是内存溢出为你收集整理的c# – 无法获取XmlDocument.SelectNodes以检索我的任何节点?全部内容,希望文章能够帮你解决c# – 无法获取XmlDocument.SelectNodes以检索我的任何节点?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1261143.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存