- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在努力将 XML 提要数据导入到我们的 CMS 中,但正在努力解决这个问题。
对于一门类(class),最多可以有 9 名工作人员照管。每个人都有姓名、电话号码、电子邮件地址和工作类型。在用于导入的 CMS 中,我有 9 组这 4 个字段,以保存数据。为了解决这个问题,如果 9 名员工中只有 5 名员工,我将定位一个 XMLnodelist 当然是联系人 - 如果它为 null,则为空字符串,否则填充字段。
在下面的代码中,cclist定义为一个xmlnodelist,test1以字符串的形式获取国际招生的全部内容。
我想做的是,使用相同的扩展格式,最多 9 个类(class)联系人,获取 xmlnodelist 项目的姓名、电子邮件、电话等并将它们分开,这样它们就可以成为目标进口。我试过使用后代等,但似乎无法单独定位这些,而不是完整的字符串。
如有任何帮助,我们将不胜感激。谢谢。
XML
<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#
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;
//上一行获取了 test:contact 的全部内容,但我需要深入到 xsi:type、name、phone 和 email 的级别
}
最佳答案
暂时离开,回来后决定为这个解决方案尝试一个二维数组。让我得到我需要的值(value),所以我很开心。无论如何,谢谢,希望这对其他人有帮助。
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();
祝一切顺利
安迪。
关于C# XMLNodeList 项目子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35503625/
我有这样的代码: string xml = ""; doc.LoadXml(xml); XmlNodeList varsList = doc.SelectNodes("span"); 但是每次 v
我很好奇,将一串 xml 节点解析为 XmlNodeList 的最巧妙方法是什么。例如; string xmlnodestr = "abc abc abc"; 我可以对列表进行字符串拆分,但那样会很困
在下面的代码中,我从 XmlDocument.SelectNodes() 获取了一个 XmlNodeList 作为返回值 foreach (XmlNode node in doc.SelectNode
我目前正在努力将 XML 提要数据导入到我们的 CMS 中,但正在努力解决这个问题。 对于一门类(class),最多可以有 9 名工作人员照管。每个人都有姓名、电话号码、电子邮件地址和工作类型。在用于
我不明白为什么这个 NodeList 是空的 XmlDocument document = new XmlDocument(); document.Load(xmlpath); XmlNodeL
有谁知道错误在哪里?或者是将视频名称转换为字符串的更好方法? string text = "VIDEO NAME"; string xpath = "feed/entry"; XmlDocument
我是 C# 编程新手。我正在尝试解析 XML 文档并在控制台上打印值。我的程序编译没有错误,但我没有得到想要的结果。 这是代码。 XmlDocument doc = new XmlDocument()
目前我有以下代码: XmlDocument xDoc = new XmlDocument(); xDoc.Load("http://api.twitter.com/1/statuses/user_ti
好吧,这已经让我忙了几个小时了,但我仍然无法解释:我的 XML 是这样开始的: PROFINET Device Profile 1.00 Device Profile f
我有一个 XmlNodeList,其中包含来自以下 XML 示例根的数据包(项目)。我想根据节点的关键属性值 对 XmlNodeList 进行排序。排序必须非常高效,每一毫秒都很重要。 你有什么想法吗
我找不到这个问题的答案。 出于好奇,为什么 XmlNodeList class在 .NET 4.5 中实现 IDisposable 而在以前的版本中没有实现? 最佳答案 很可能出于与 IEnumera
如果我有一个 XMLDocument 并且想要计算节点的结果数量,我会使用类似的东西 //XmlNodeList CountResultsReturned = XMLSearch.Se
我有一个产品的 XmlNodeList,其值被放入表中。现在,我想在找到某个产品时向列表中添加一个新的 XmlNode,以便在同一循环中,新产品的处理方式与文件中最初的项目相同。这样函数的结构不需要改
我正在使用 xmldocument 读取 xml 文件。我使用 xmlnodelist 提取了 xml 的节点。我现在想将 xmlnodelist 分配给对象列表“项目”。请让我知道我该怎么做。
我有一个外部库需要“XmlNode[]”而不是 XmlNodeList。有没有一种无需遍历和传输每个节点的直接方法? 我不想这样做: XmlNode[] exportNodes = XmlNode[m
我想选择id为“abc”的节点,返回其abv为“a”。 XmlDocument doc = new XmlDocument(); doc.Load(filePath); XmlNode
我需要根据条件删除 XmlNode。怎么做? foreach (XmlNode drawNode in nodeList) { //Based on a condition
我无法在 XmlNodeList 上使用 Any()。我还使用了 System.Linq 和 System.Xml.Linq 命名空间。但我仍然没有在 XmlNodeList 上找到任何此类扩展方法。
我想用 XElement 做这个: XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); mlNodeList nodeList = doc.G
我认为这很简单,但实际上我只有 1 个节点需要添加到节点列表。 所以我有 XmlNode xmlNode。该节点包含我需要的所有信息。我需要将其添加到 XmlNodeList xmlnodeList。
我是一名优秀的程序员,十分优秀!