【发布时间】:2013-04-14 16:25:24
【问题描述】:
我正在尝试使用 getText() 在 JDOM2 中检索 CDATA 值,但我只得到以下 -<![CDATA[ ]]>
我的 XML 如下所示
<ROOT>
<CHILD>
<P><![CDATA[<ROOT><ELEMENT>SOMECONTENT</ELEMENT></ROOT>]]></P>
</CHILD>
</ROOT>
CDATA 包含 XML 内容,我需要将其作为字符串存储在 elsewejhere 代码(sn-p)如下所示
XPathFactory xpfac = XPathFactory.instance();
XPathExpression<Element> xElements = xpfac.compile(sXpath,Filters.element(),null,Namespace.getNamespace("myns", "http://www.namespace.com/ns"));
List<Element> elements = xElements.evaluate(doc);
for (Element xElem : elements) {
if(!isCDATA)
{
sRetval=xElem.getValue();
}
else
{
sRetval=xElem.getText();
}
return sRetval;
}
getValue() 工作正常,而 getText() 仅返回 <![CDATA[ ]]>
当然,我的 XPAHT 看起来像这样
//ROOT/CHILD/P
知道如何获取 CDATA 的内容吗?
编辑:如果我替换<P><![CDATA[ SOMECONTENT]]></P>,我会得到“SOMECONTENT”..所以我无法从 CDATA 获取 XML 内容
【问题讨论】:
-
为什么要检索
CDATA节点的text?似乎只需获取包含<P>标记的text或value就足够了。 -
如果
getValue()工作正常,为什么不直接使用它呢? -
getValue()没有返回整个 cdata,而只返回 CDATA 中的 TEXT 内容(没有标签)我的情况是