Примечание: ответ Яшоды не сработал для меня, что верно в большинстве случаев.
Хотя я установил state_checked
, это правда и дает ему яркий цвет, кажется, что элемент никогда checked.
Для большего поиска я обнаружил, что проблема произошла с пунктом меню. Я не дал проверенному элементу true в пункте меню в файле меню.
Затем мне нужно добавить к нему тег android:checkable=true
.
и работает как прелесть.
Как насчет:
public static string TransformXMLToHTML(string inputXml, string xsltString)
{
XslCompiledTransform transform = new XslCompiledTransform();
using(XmlReader reader = XmlReader.Create(new StringReader(xsltString))) {
transform.Load(reader);
}
StringWriter results = new StringWriter();
using(XmlReader reader = XmlReader.Create(new StringReader(inputXml))) {
transform.Transform(reader, null, results);
}
return results.ToString();
}
Обратите внимание, что в идеале вы должны кэшировать и повторно использовать XslCompiledTransform
- или, возможно, использовать XslTransform
вместо этого (он отмечен как устаревший, хотя).
Просто для удовольствия, немного менее элегантная версия, которая реализует кеширование, предложенное Marc:
public static string TransformXMLToHTML(string inputXml, string xsltString)
{
XslCompiledTransform transform = GetAndCacheTransform(xsltString);
StringWriter results = new StringWriter();
using (XmlReader reader = XmlReader.Create(new StringReader(inputXml)))
{
transform.Transform(reader, null, results);
}
return results.ToString();
}
private static Dictionary<String, XslCompiledTransform> cachedTransforms = new Dictionary<string, XslCompiledTransform>();
private static XslCompiledTransform GetAndCacheTransform(String xslt)
{
XslCompiledTransform transform;
if (!cachedTransforms.TryGetValue(xslt, out transform))
{
transform = new XslCompiledTransform();
using (XmlReader reader = XmlReader.Create(new StringReader(xslt)))
{
transform.Load(reader);
}
cachedTransforms.Add(xslt, transform);
}
return transform;
}