我已将以下XML作为IQueryable传递给方法,即
XML:
<body>
<p>Some Text</p>
<p>Some Text</p>
<pullquote>This is pullquote</pullquote>
<p>Some Text</p>
<p>Some Text</p>
<body>
方法:
public static string CreateSection(IQueryable<XElement> section)
{
var bodySection = from b in articleSection.Descendants("body")
select b;
//Do replacement here.
var bodyElements = bodySection.Descendants();
StringBuilder paragraphBuilder = new StringBuilder();
foreach (XElement paragraph in bodyElements)
{
paragraphBuilder.Append(paragraph.ToString());
}
return paragraphBuilder.ToString();
}
我想要完成的是将<pullquote>
替换为<p>
(并且可能添加属性)。
我的问题不是实际的替换(XElement.ReplaceWith()),而是替换后的更改并不反映StringBuilder使用的bodySection变量。
我如何才能让它发挥作用?
答案 0 :(得分:1)
您还没有真正显示足够的代码 - 特别是,您没有显示您尝试使用的替换代码。
但是,我怀疑主要问题是bodySection
是一个查询。每次使用它时,它都会再次查询section
- 如果那是从数据库中提取信息,那么就这样吧。你可能会发现这就是让它做你想做的所有事情:
var bodySection = articleSection.Descendants("body").ToList();
这样你就可以在内存中获取正文部分了,每当你使用bodySection
时,你将使用相同的对象集合,而不是再次查询。
答案 1 :(得分:0)