Минимальный пример, демонстрирующий эту проблему:
Код: Выделить всё
package something...;
import net.shibboleth.utilities.java.support.xml.SerializeSupport;
import org.opensaml.core.config.InitializationException;
import org.opensaml.core.config.InitializationService;
import org.opensaml.core.xml.schema.XSString;
import org.opensaml.core.xml.schema.impl.XSStringBuilder;
import org.opensaml.core.xml.util.XMLObjectSupport;
import org.opensaml.saml.saml2.core.Attribute;
import org.opensaml.saml.saml2.core.AttributeValue;
import org.w3c.dom.Document;
/** Generates Response.xml using openSAML library version 3. */
final class SamlResponseGenerator {
public static void main(String[] args) throws Exception {
try {
InitializationService.initialize();
} catch (InitializationException e) {
throw new IllegalStateException(e);
}
// First Name Attribute.
Attribute firstNameAttribute =
(Attribute) XMLObjectSupport.buildXMLObject(Attribute.DEFAULT_ELEMENT_NAME);
firstNameAttribute.setName("FirstName");
XSStringBuilder firstNameTestValueStringBuilder = new XSStringBuilder();
XSString firstNameAttributeValueXS =
firstNameTestValueStringBuilder.buildObject(
AttributeValue.DEFAULT_ELEMENT_NAME, XSString.TYPE_NAME);
String myName = "𠮷";
firstNameAttributeValueXS.setValue(myName);
firstNameAttribute.getAttributeValues().add(firstNameAttributeValueXS);
Document doc = XMLObjectSupport.marshall(firstNameAttribute).getOwnerDocument();
String docString = SerializeSupport.nodeToString(doc);
System.out.println(docString);
}
private SamlResponseGenerator() {}
}
- Трансформаторы (не работает)
- XMLHelper.writeNode с файлообменником, открытым в формате кодировки utf-8. Не работает
- Вывод XML в постпроцессе (работает, но это хакерство)
- Пробовал с OpenSAML v2 и v3 (не работает)
- Маршалинг суррогатных пар в формате XML
Разве в этой статье в Википедии не говорится, что суррогатные пары не допускаются в числовой ссылочной нотации.
Подробнее здесь: https://stackoverflow.com/questions/788 ... ogate-pair
Мобильная версия