Символ '#' в имени атрибута XML создает исключение DOMException - PullRequest
1 голос
/ 30 марта 2010

следующий код (с использованием библиотеки iText):

PdfStamper stamp = new PdfStamper(reader, outputStream);
AcroFields form = stamp.getAcroFields();
String name = "form1[0].#subform[0].Table1[0].#subformSet[0].Row[2].#field[0]";
form.setField(name, "");

выдает следующую ошибку:

org.w3c.dom.DOMException: INVALID_CHARACTER_ERR: An invalid or illegal XML character is specified. 
 at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.checkQName(CoreDocumentImpl.java:2571)
 at com.sun.org.apache.xerces.internal.dom.ElementNSImpl.setName(ElementNSImpl.java:117)
 at com.sun.org.apache.xerces.internal.dom.ElementNSImpl.<init>(ElementNSImpl.java:80)
 at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.createElementNS(CoreDocumentImpl.java:2084)
 at com.lowagie.text.pdf.XfaForm$Xml2SomDatasets.insertNode(Unknown Source)
 at com.lowagie.text.pdf.AcroFields.setField(Unknown Source)
 at com.lowagie.text.pdf.AcroFields.setField(Unknown Source)

очевидно, это из-за знака «#» в имени поля. Имя этого поля взято из коллекции AcroFields.getFields (), и кажется очень странным, что сброс этого значения приводит к ошибке.

Существуют ли способы устранения этой ошибки без изменения реального имени поля?

1 Ответ

0 голосов
/ 31 марта 2010

чтобы быть более конкретным:

String name = "form1[0].#subform[0].Table1[0].#subformSet[0].Row[2].#field[0]"; 
form.setField(name.replace("#", "&#23;"), ""); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...