我正在从 XML 文件创建数据导入,以输入到我们的 CMS。一门课程最多可以有 9 个级别的模块,每个级别可以有多个模块标题。
例如 XML
<test:modules>
<test:module>
<test:title>
<![CDATA[ Module title 1 ]]>
</test:title>
<test:content>
<![CDATA[ ]]>
</test:content>
<test:group>Year 1 Core Modules</lmu:group>
</test:module>
<test:module>
<test:title>
<![CDATA[ Module title 2 ]]>
</test:title>
<test:content>
<![CDATA[ ]]>
</test:content>
<test:group>Year 1 Core Modules</test:group>
</test:module>
<test:module>
<test:title>
<![CDATA[ Module title 1 ]]>
</test:title>
<test:content>
<![CDATA[ ]]>
</test:content>
<test:group>Year 2 Core Modules</test:group>
</test:module>
<test:module>
<test:title>
<![CDATA[ Module title 2 ]]>
</test:title>
<test:content>
<![CDATA[ ]]>
</test:content>
<test:group>Year 2 Core Modules</test:group>
</test:module>
<test:module>
<test:title>
<![CDATA[ Module title 1 ]]>
</test:title>
<test:content>
<![CDATA[ ]]>
</test:content>
<test:group>Year 3 Core Modules</test:group>
</test:module>
</test:modules>
我想要做的是循环遍历每个项目,并为每个组保存每个“组”下的 ul li 模块列表。
我想把它保存到一个 9x3 2D 数组中,所以我可以访问它进行导入。
所以:
modulesArray[0, 0] would be "Year 1 Core Modules"
modulesArray[0, 1] would be "<ul><li>Module title 1<li><li>Module title 2<li></ul>
我的代码如下,但我不知道从这里去哪里:
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 code =
xmlResult.DocumentElement.SelectSingleNode(
"dc:identifier[@xsi:type=\"courseDataProgramme:internalID\"]", xmlnsManager).InnerText;
var title = xmlResult.DocumentElement.SelectSingleNode("dc:title", xmlnsManager).InnerText;
var subject = xmlResult.DocumentElement.SelectSingleNode("dc:subject", xmlnsManager).InnerText;
String[,] modulesArray = new String[6, 3];
XmlNodeList modList = xmlResult.DocumentElement.SelectNodes("test:modules/test:module", xmlnsManager);
// var modulestest1 = modList.Item(1).InnerText;
int modulecount = 0;
int titlescount = modList.Count;
var previousModuleGroupTitle = "";
var modulecontenttitles = "";
foreach (XmlNode mn in modList)
{
var currentmodgroup = mn["test:group"].InnerText;
if (previousModuleGroupTitle == "")
{
modulecontenttitles += "<ul>";
modulecontenttitles += "<li>" + mn["test:title"].InnerText + "</li>";
}
if (previousModuleGroupTitle == mn["test:group"].InnerText)
{
modulecontenttitles += "<li>" + mn["test:title"].InnerText + "</li>";
}
else
{
modulecontenttitles += "</ul>";
modulecount++;
modulesArray[modulecount, 0] = modulecontenttitles;
modulecontenttitles = "";
modulecontenttitles += "<ul><li>" + mn["test:title"].InnerText + "</li>";
}
// modulesArray[modulecount, 0] = mn["test:title"].InnerText;
//modulesArray[modulecount, 1] = mn["test:content"].InnerText;
//modulesArray[modulecount, 2] = mn["test:group"].InnerText;
previousModuleGroupTitle = mn["test:group"].InnerText;
modulecount++;
}
modulesArray[0, 0].ToString();
}