gpt4 book ai didi

java - 将 CDATA 添加到 XmlObject

转载 作者:行者123 更新时间:2023-12-01 15:24:39 25 4
gpt4 key购买 nike

我正在编写一些与需要以下元素的遗留系统通信的代码:

<BankRate><![CDATA[        ]]><BankRate>

我一生都无法让这个工作正常进行,到目前为止我的尝试是:

parent.setBankRate("    ");
XmlCursor cursor = cc.xgetBankRate().newCursor();
cursor.toFirstContentToken();
cursor.setBookmark(CDataBookmark.CDATA_BOOKMARK);
cursor.dispose();

这只会导致以下结果:

<BankRate><BankRate>

父级的选项是: setSaveCDataEntityCountThreshold(0).setSaveCDataLengthThreshold(0);

如果我将 BankRate 设置为如下所示:

cc.setBankRate("<![CDATA[        ]]>");

我得到了角色实体(这不是我想要的)

最佳答案

我尝试了以下测试:

import org.apache.xmlbeans.*;

public class main {
public static void main ( String[] args ) throws XmlException {
XmlObject x = XmlObject.Factory.parse( "<BankRate> </BankRate>" );
XmlCursor c = x.newCursor();
c.toFirstContentToken();
c.toNextToken();
c.setBookmark(CDataBookmark.CDATA_BOOKMARK);
XmlOptions options = new XmlOptions();
options.setSaveCDataLengthThreshold( 1 );
options.setUseCDataBookmarks();
System.out.print( x.xmlText( options ) );
}
}

结果是:

<BankRate><![CDATA[        ]]></BankRate>

如果您的目标是强制将 BankRate 的内容保存为 CDATA,那么您可以这样做。

但是,如果这不起作用,并且您没有得到任何值(空元素)作为 BankRate 的值,那么可能发生的情况是 BankRate 类型不是文本,而是忽略空格的其他类型。如果您确实需要获取空格作为 BankRate 的值,则必须使用 XmlCursor 注入(inject)它。

关于java - 将 CDATA 添加到 XmlObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10344610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com