如何使用XmlNodeList解析XML文件

问题描述 投票:1回答:1

我的任务是获取一个XML文件并将其转换为新的XML,我没有使用XML文档的经验,但是我已经能够使用下面显示的代码从第一个XML文档中获取一些数据。请注意,并非所有代码都只是一个小示例而已。

XmlDocument rssXmlDoc = new XmlDocument();
        // Load the RSS file from the RSS URL
        rssXmlDoc.Load("https://agency.governmentjobs.com/jobfeed.cfm?agency=ocso");

        // Setup name space
        XmlNamespaceManager nsmgr = new XmlNamespaceManager(rssXmlDoc.NameTable);
        nsmgr.AddNamespace("joblisting", "http://www.neogov.com/namespaces/JobListing");

        // Parse the Items in the RSS file
        XmlNodeList rssNodes = rssXmlDoc.SelectNodes("rss/channel/item/");

        // Iterate through the items in the RSS file
        foreach (XmlNode rssNode in rssNodes)
        {

            XmlNode rssSubNode = rssNode.SelectSingleNode("title");
            string title = rssSubNode != null ? rssSubNode.InnerText : "";

使用此代码,我可以获得大多数元素。尝试从子元素获取数据时遇到了麻烦。无法显示的XML部分如下所示。

<joblisting:department>Supply</joblisting:department>
                <guid isPermaLink="true">https://www.governmentjobs.com/careers/ocso/Jobs/2594527</guid>
                <joblisting:categories>
                      <joblisting:category xmlns:joblisting="http://www.neogov.com/namespaces/JobListing" xmlns:atom="http://www.w3.org/2005/Atom">
                        <CategoryCode>ClericalDataEntry</CategoryCode>
                        <Category>Clerical &amp; Data Entry</Category>
                      </joblisting:category>
                      <joblisting:category 
                </joblisting:categories>            

但是我无法获取所有数据。如何获得以guid isPermaLink =“ true”

开头的元素的值

对于Joblisting:类别,我已经使用了foreach循环来读取这些值

foreach (var item in rssSubNode.SelectNodes("joblisting:categories", nsmgr))
            {
                rssSubNode = rssSubNode = rssNode.SelectSingleNode("joblisting:category", nsmgr);
                string category = rssSubNode != null ? rssSubNode.InnerText : "";
            }

如何读取这些子元素的值?

c# xml xmlnode
1个回答
0
投票
要阅读guid节点,可以使用以下代码。请注意,在节点中使用selectSingleNode包含“项目”节点。

public static void test() { XmlDocument rssXmlDoc = new XmlDocument(); // Load the RSS file from the RSS URL rssXmlDoc.Load("https://agency.governmentjobs.com/jobfeed.cfm?agency=ocso"); // Setup name space XmlNamespaceManager nsmgr = new XmlNamespaceManager(rssXmlDoc.NameTable); nsmgr.AddNamespace("joblisting", "http://www.neogov.com/namespaces/JobListing"); // Parse the Items in the RSS file XmlNodeList rssNodes = rssXmlDoc.SelectNodes("rss/channel/item"); // Iterate through the items in the RSS file foreach (XmlNode rssNode in rssNodes) { var xmlnode = rssNode.SelectSingleNode("guid "); System.Console.WriteLine("the value of guid is =>" + xmlnode.InnerText); XmlNode rssSubNode = rssNode.SelectSingleNode("title"); string title = rssSubNode != null ? rssSubNode.InnerText : ""; } }

© www.soinside.com 2019 - 2024. All rights reserved.