首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# XMLNodeList项目儿童

C# XMLNodeList项目儿童
EN

Stack Overflow用户
提问于 2016-02-19 10:57:32
回答 1查看 471关注 0票数 2

我目前正致力于将XML提要数据导入我们的CMS中,但是在如何解决这个问题方面,我正在苦苦挣扎。

对于一门课程,最多有9名工作人员负责管理。每个人都有一个名字,电话号码,电子邮件地址和工作类型。在CMS的导入,我有9组这4个字段,以保存数据。为了解决这个问题,如果9人中只有5人,我当然是针对一个XMLnodelist联系人--如果它是null,就有一个空字符串,否则就会填充字段。

在下面的代码中,cclist被定义为xmlnodelist,test1以字符串的形式获取整个国际招生的全部内容。

我想要做的事情,使用相同的格式扩展,是最多9个课程联系人,获取名称,电子邮件,电话等的xmlnodelist项目,并将他们分开,以便他们可以被指定为导入。我尝试过使用后代等,但似乎不能单独针对这些,而不是一个完整的字符串。

任何帮助都将不胜感激。谢谢。

XML

代码语言:javascript
复制
<course>
    <dc:description>...</dc:description>
    <dc:title>
        <![CDATA[ Marketing ]]>
    </dc:title>
    <learningOutcome>...</learningOutcome>
    <test:coursecontacts
        <test:contact xsi:type="LeadAcademic">
            <test:name
                <![CDATA[ Tommy Thompson ]]>
            </test:name
            <test:phone>0123456789</test:phone>
            <test:email>tt@test.com</test:email>
        </test:contact>
        <test:contact xsi:type="Admissions Administrator">
            <test:name>
                <![CDATA[ International Admissions ]]>
            </test:name>
            <test:phone>0123456678</test:phone>
            <test:email>ia@test.com</test:email
        </test:contact
        <test:contact xsi:type="Course Leader">...</test:contact>
        <test:contact xsi:type="Admissions Administrator">...</test:contact>
        <test:contact xsi:type="Course Administrator">...</test:contact>
    </test:coursecontacts>
</course>

C#

代码语言:javascript
复制
protected override FeedCourse MapXmlNodeToEntity(XElement p)
        {
            var xmlResult = new XmlDocument();
            xmlResult.LoadXml(p.ToString());
            var test = p.ToString();

            var xmlnsManager = new XmlNamespaceManager(xmlResult.NameTable);
            xmlnsManager.AddNamespace("ns", "http://xcri.org/profiles/1.2/catalog");
            xmlnsManager.AddNamespace("xcriTerms", "http://xcri.org/profiles/catalog/terms");
            xmlnsManager.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
            xmlnsManager.AddNamespace("xhtml", "http://www.w3.org/1999/xhtml");
            xmlnsManager.AddNamespace("dc", "http://purl.org/dc/elements/1.1/");
            xmlnsManager.AddNamespace("dcterms", "http://purl.org/dc/terms/");
            xmlnsManager.AddNamespace("credit", "http://purl.org/net/cm");
            xmlnsManager.AddNamespace("mlo", "http://purl.org/net/mlo");
            xmlnsManager.AddNamespace("courseDataProgramme", "http://xcri.co.uk");
            xmlnsManager.AddNamespace("test", "http://www.test.com");

            var elements = xmlResult.ChildNodes;

            var title = xmlResult.DocumentElement.SelectSingleNode("dc:title", xmlnsManager).InnerText;
            var description = xmlResult.DocumentElement.SelectSingleNode("dc:description", xmlnsManager).InnerText;
            var learningOutcome = xmlResult.DocumentElement.SelectSingleNode("ns:learningOutcome", xmlnsManager).InnerText;


            XmlNodeList ccList = xmlResult.DocumentElement.SelectNodes("test:coursecontacts/test:contact", xmlnsManager);
            var test1 = ccList.Item(1).InnerText;

//上面的行获得测试的全部内容:contact,但我需要降低到xsi的级别:类型、名称、电话和电子邮件

代码语言:javascript
复制
        }
EN

回答 1

Stack Overflow用户

发布于 2016-02-19 15:14:57

中断了一段时间后,返回并决定为该解决方案尝试一个2d数组。让我得到我所需要的价值,所以我很高兴。不管怎样,谢谢你,希望这能帮到别人。

代码语言:javascript
复制
        int contactcount = 0;
        String[,] contactsArray = new String[9, 3];
        XmlNodeList ccList = xmlResult.DocumentElement.SelectNodes("test:coursecontacts/test:contact", xmlnsManager);
        var test1 = ccList.Item(1).InnerText;
        foreach (XmlNode xn in ccList)
        {
            contactsArray[contactcount, 0] = xn["test:name"].InnerText + " ("+ xn["@xsi:type"]+")";
            contactsArray[contactcount, 1] = xn["test:phone"].InnerText;
            contactsArray[contactcount, 2] = xn["test:email"].InnerText;
            contactcount++;
        }
        var test2 = contactsArray[0,0].ToString()+ contactsArray[0, 1].ToString() + contactsArray[0, 2].ToString();

万事如意,

安迪。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35503625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档