【发布时间】:2014-07-29 18:21:59
【问题描述】:
我在解析 C# 中的提要时遇到问题。
我无法让提要的作者更改代码,所以我必须处理它。
我尝试将提要作为 URL 直接传递到 XmlDocument 对象,或者使用 WebClient 作为文本获取它,修剪它以删除似乎由于某种原因放在它前面的任何空间,然后使用 LoadXML 方法加载它。
您可以在此处查看提要示例 > http://scotjobsnet.co.uk.ni.strategiesuk.net/testfeed.xml
我无法通过任何一个
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(feedURL);
或者用字符串。
XmlDocument xmlDoc = new XmlDocument();
string feedAsString = "";
// get from web as string
var webClient = new WebClient();
// Tell them who we are for white listing
webClient.Headers.Add("user-agent", "Mozilla/5.0 (compatible; Job Feed Importer;)");
// fetch feed as string
var content = webClient.OpenRead(feedURL);
var contentReader = new StreamReader(content);
var rssFeedAsString = contentReader.ReadToEnd();
rssFeedAsString = rssFeedAsString.Trim(); // remove any white space beore the feed
xmlDoc.LoadXml(feedAsString);
我得到的错误是:
Root element is missing.
Could not extract first items from feed string; Error The element with name 'jobs' and namespace '' is not an allowed feed format.
我想使用 xpath /jobs/job/ 循环通过提要节点。
我之前解析过这样的提要,XmlDocument 只传入一个 URL,如果不是,则传入一个字符串。
我正在考虑使用正则表达式来循环使用<job>[\s\S]+></job> 类型表达式的提要。
但我更愿意使用标准方法。
由于我无法更改提要,任何人都可以告诉我提要有什么问题以及我解析它的方式。原谅我使用 var 我只是被编造了一段代码来解析来自使用它的示例的提要。我在其他任何地方都使用强类型,一旦我开始工作就会转换它。
任何帮助将不胜感激。
谢谢
【问题讨论】: