gpt4 book ai didi

java - XML 属性名称中的符号 '#' 会产生 DOMException

转载 作者:行者123 更新时间:2023-12-01 05:57:12 25 4
gpt4 key购买 nike

以下代码(使用 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() 集合,设置回该值会产生错误,这似乎很奇怪。

是否有任何方法可以在不更改实际字段名称的情况下处理此错误?

最佳答案

更具体地说:

String name = "form1[0].#subform[0].Table1[0].#subformSet[0].Row[2].#field[0]"; 
form.setField(name.replace("#", "&#23;"), "");

关于java - XML 属性名称中的符号 '#' 会产生 DOMException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2546348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com