articleABS()
方法输出是以下XML。
Conflict <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="#####" type="text/xsl"?> <?xml-stylesheet href="####" type="text/css"?> <status><code>409</code><message>content.article.required.title null</message></status>
我创建了createURL()
方法,它应该读取articleABS()
的输出并从<code>
节点中提取值。我想使用代码中的值来添加一些条件。
public string createURL()
{
string uri = "";
var document = XDocument.Parse(articleABS());
var code = document.Descendants("status").Single().Attribute("code").Value;
if (code == "209")
{
articleCDO();
}
else
{
var href = document.Descendants("link").Single().Attribute("title").Value;
href = href.Replace("Article", "");
string id = Regex.Match(href, @"\d+").Value;
var result = (@"https://#####/article/" + id + "/sections");
return uri = result.ToString();
}
return null;
}
但是,当我运行createURL()
函数时,我会继续获取以下内容
错误信息。
错误讯息:Data at the root level is invalid. Line 1, position 1.
代码行:var document = XDocument.Parse(articleABS());
请告知我可能出错的地方。谢谢
答案 0 :(得分:3)
XML以&#34; Conflict&#34;开头。我不知道这是否是复制/粘贴错误,但肯定会导致解析失败。
答案 1 :(得分:1)
看起来“冲突”这个词出现在XML数据的开头。在尝试将字符串解析为XML之前,您需要删除它。
你可以这样做:
string currentXml = articleABS();
string fixedXml = currentXml.Substring(currentXml.IndexOf("<"));
var document = XDocument.Parse(fixedXml);