我需要將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 –