Использование библиотеки Glide :
Glide.with(context)
.load(new File(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
я думаю поток, на который Вы сослались, говорит, что сама разметка CDATA проигнорирована XPath, не текстом, содержавшимся в разметке CDATA.
мое предположение - то, что проблема с инструментом, исходный код доступен для скачивания, возможно, можно отладить его...
/Obj/Name/text()
XPath для возврата содержания разметки CDATA.
то, Что отбросило меня, было поведением свойства Value. Для XMLNode (мир DOM), XmlNode. Свойство значения Элемента (с CDATA или иначе) возвращает Пустой указатель. Свойство InnerText дало бы Вам содержание CDATA/Text. Если Вы используете Xml. Linq, XElement. Значение возвращает содержание CDATA.
string sXml = @"
<object>
<name><![CDATA[SomeText]]></name>
<name>OtherName</name>
</object>";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml( sXml );
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmlDoc.NameTable);
Console.WriteLine(@"XPath = /object/name" );
WriteNodesToConsole(xmlDoc.SelectNodes("/object/name", nsMgr));
Console.WriteLine(@"XPath = /object/name/text()" );
WriteNodesToConsole( xmlDoc.SelectNodes("/object/name/text()", nsMgr) );
Console.WriteLine(@"Xml.Linq = obRoot.Elements(""name"")");
XElement obRoot = XElement.Parse( sXml );
WriteNodesToConsole( obRoot.Elements("name") );
Вывод:
XPath = /object/name
NodeType = Element
Value = <null>
OuterXml = <name><![CDATA[SomeText]]></name>
InnerXml = <![CDATA[SomeText]]>
InnerText = SomeText
NodeType = Element
Value = <null>
OuterXml = <name>OtherName</name>
InnerXml = OtherName
InnerText = OtherName
XPath = /object/name/text()
NodeType = CDATA
Value = SomeText
OuterXml = <![CDATA[SomeText]]>
InnerXml =
InnerText = SomeText
NodeType = Text
Value = OtherName
OuterXml = OtherName
InnerXml =
InnerText = OtherName
Xml.Linq = obRoot.Elements("name")
Value = SomeText
Value = OtherName
Оказался, что у автора Визуального XPath был TODO для типа CDATA XmlNodes. У небольшого фрагмента кода и меня есть поддержка CDATA теперь.
MainForm.cs
private void Xml2Tree( TreeNode tNode, XmlNode xNode)
{
...
case XmlNodeType.CDATA:
//MessageBox.Show("TODO: XmlNodeType.CDATA");
// Gishu
TreeNode cdataNode = new TreeNode("![CDATA[" + xNode.Value + "]]");
cdataNode.ForeColor = Color.Blue;
cdataNode.NodeFont = new Font("Tahoma", 12);
tNode.Nodes.Add(cdataNode);
//Gishu
break;
разделы CDATA являются просто частью того, что в XPath известен как text node
или в Инфонабор XML как "блоки символьных единиц информации".
, Очевидно, Ваш инструмент неправильный . Другие инструменты, как XPath Visualizer правильно выделяют текст Name
элемент при оценке этого выражения XPath:
/*/Name/text()
можно также записать простое преобразование XSLT :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
"<xsl:value-of select="/*/Name"/>"
</xsl:template>
</xsl:stylesheet>
, Когда это преобразование применяется на предоставленный XML-документ :
<Obj>
<Name><![CDATA[SomeText]]></Name>
</Obj>
к корректному результату приводят:
"SomeText"
Посмотрите, помогает ли это - http://www.zrinity.com/xml/xpath/
XPath =/Obj/Name/text ()
Предложение заключается в том, чтобы иметь еще одно поле md5 хэша cdata. Тогда вы сможете использовать xpath для запроса на основе md5 без проблем
<sites>
<site>
<name>Google</name>
<url><![CDATA[http://www.google.com]]></url>
<urlMD5>ed646a3334ca891fd3467db131372140</urlMD5>
</site>
</sites>
Тогда вы сможете искать:
/sites/site[urlMD5=ed646a3334ca891fd3467db131372140]