我需要将CDATA添加到xml字符串以用证书对其进行签名。java将cdata添加到xml字符串
字符串看起来像:
<SignedContent>someparametres</SignedContent>
结果一定是这样的:
<![CDATA[<SignedContent>someparametres</SignedContent>]]>
我怎样才能做到这一点?请帮助
P.S. XML字符串只有一个行(去除所有标签,所有空格,BOM)
我需要将CDATA添加到xml字符串以用证书对其进行签名。java将cdata添加到xml字符串
字符串看起来像:
<SignedContent>someparametres</SignedContent>
结果一定是这样的:
<![CDATA[<SignedContent>someparametres</SignedContent>]]>
我怎样才能做到这一点?请帮助
P.S. XML字符串只有一个行(去除所有标签,所有空格,BOM)
这听起来像你只是想:
Node cdata = doc.createCDATASection(text);
parentElement.appendChild(cdata);
如何将cdata添加到根元素为SignedContent的xml中。如果我像你写的那样添加cdata,它会看起来像'
@bakash_erni:目前尚不清楚你的意思。你在问题中显示的内容是* SignedContent。换句话说,你应该带上你的SignedContent元素,将它转换为文本,从中创建一个CDATASection,并将它添加到其他节点。您不能拥有其根节点本身为CDATA的XML文档。 –
使用Java类+
操作:
"<![CDATA[" + "<SignedContent>someparametres</SignedContent>" + "]]>"
*请*不要使用字符串操作开始操作XML文档。食谱失败。 –
@JonSkeet CDATA只包含字符数据。它不过是一个字符串。 – ceving
祝你好运,如果你想表示的文字恰好包含']]>'。我希望XML API能立即清除错误,而不是给你一个无效的XML文档。绕过XML模型并使用字符串几乎总是一个坏主意。 –
这篇帖子可能是持有,但我觉得我应该回应,这可能会帮助别人。
JAXBContext context = JAXBContext.newInstance(SignedContent.class);
Marshaller marshallerObj = context.createMarshaller();
marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter sw = new StringWriter();
marshallerObj.marshal(signedContentObj, sw);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(true);
factory.setExpandEntityReferences(false);
Document doc = factory.newDocumentBuilder().newDocument();
doc.createCDATASection(sw.toString()).getData();
您可以在这里玩...
糟糕,我的回答是在JAVA中,因为问题没有指定任何语言 – Rasheed
什么是您使用XML API? –
它真的必须是CDATA吗?内容是否可以简单编码以便在xml中使用(即<SignedContent>某些参数</SignedContent >)? –
@BrettOkken是的,它必须是CDATA –