CMS に入力するために、XML ファイルからデータ インポートを作成しています。コースには最大 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();
}