java - 如何获取JDOM2中CDATA的值

标签 java jdom-2

我正在尝试使用 getText() 检索 JDOM2 中的 CDATA 值,但我只得到以下内容 -
<![CDATA[ ]]>

我的 XML 如下所示

<ROOT>
 <CHILD>
    <P><![CDATA[<ROOT><ELEMENT>SOMECONTENT</ELEMENT></ROOT>]]></P>
 </CHILD>
</ROOT>

CDATA 包含 XML 内容,我需要将其作为字符串存储在其他地方 代码(片段)如下所示

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 内容

最佳答案

我尝试重现您的问题,但不能......(作为正确格式的答案发布)......

public static void main(String[] args) throws JDOMException, IOException {
    final String xml = "<ROOT>\n <CHILD>\n    <P><![CDATA[<ROOT><ELEMENT>SOMECONTENT</ELEMENT></ROOT>]]></P>\n </CHILD>\n</ROOT>";

    Document doc = new SAXBuilder().build(new StringReader(xml));
    XPathFactory fac = XPathFactory.instance();
    XPathExpression<Element> ex = fac.compile("//ROOT/CHILD/P", Filters.element());
    for (Element e : ex.evaluate(doc)) {
        System.out.printf("getValue() %s\n", e.getValue());
        System.out.printf("getText() %s\n", e.getText());
    }
}

产生:

getValue() <ROOT><ELEMENT>SOMECONTENT</ELEMENT></ROOT>
getText() <ROOT><ELEMENT>SOMECONTENT</ELEMENT></ROOT>

我对你做了什么不同的事情?

关于java - 如何获取JDOM2中CDATA的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16001329/

相关文章:

java - 如何将外部配置文件属性与 Spring Boot 2 中包含的通用属性一起使用

java - 如何使用 org.jdom2 获取文档的 xml 版本?

xslt - 如何使用 JDOM2 转换带有 CDATA 的 XML 文档?

Java jdom xml解析

java - 将 JWindow/JFrame 与 Java 中的可视屏幕右对齐

java - 使用 Spring @Transactional 进行 TestNG 多线程测试

java - Java DOM getAttribute 的意外结果

java - Jackson 从一组 json 属性创建对象

java - Android JDOM2 xml解析,IOExcetion

java - 我想生成一个XML文件,如果有特殊字符则不需要转义