2014-12-26 37 views
0

我試圖添加類似於以下爲SAML XML元素:的AttributeValue,如何在OpenSAML中將簡單的XML元素添加爲AttributeValue?

<ABC>cde</ABC> 

使用DocumentBuilderFactory可以獲取XML元素,我用下面的代碼獲取XSAny類型的對象。

XSAnyBuilder anyBuilder = (XSAnyBuilder)Configuration.getBuilderFactory().getBuilder(XSAny.TYPE_NAME); 
XSAny any = anyBuilder.buildObject(AttributeValue.DEFAULT_ELEMENT_NAME, XSAny.TYPE_NAME); 
XSAny xo = anyBuilder.buildObject(xmlElement); 

但我發現了以下從第3行錯誤,

Caused by: java.lang.IllegalArgumentException: local part cannot be "null" when creating a QName 
    at javax.xml.namespace.QName.<init>(QName.java:246) 
    at javax.xml.namespace.QName.<init>(QName.java:190) 
    at org.opensaml.xml.util.XMLHelper.constructQName(XMLHelper.java:433) 
    at org.opensaml.xml.AbstractXMLObject.<init>(AbstractXMLObject.java:82) 
    at org.opensaml.xml.validation.AbstractValidatingXMLObject.<init>(AbstractValidatingXMLObject.java:48) 
    at org.opensaml.xml.schema.impl.XSAnyImpl.<init>(XSAnyImpl.java:52) 
    at org.opensaml.xml.schema.impl.XSAnyBuilder.buildObject(XSAnyBuilder.java:29) 
    at org.opensaml.xml.schema.impl.XSAnyBuilder.buildObject(XSAnyBuilder.java:25) 
    at org.opensaml.xml.AbstractXMLObjectBuilder.buildObject(AbstractXMLObjectBuilder.java:51) 
    at org.opensaml.xml.AbstractXMLObjectBuilder.buildObject(AbstractXMLObjectBuilder.java:66) 

上任何想法?

回答

0

您不能直接將XML添加爲AttributeValue,因爲它會破壞斷言XML模式。

最好的解決辦法是插入之前逃脫你的XML:

&lt;ABC&gt;cde&lt;/ABC&gt;