- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试转义字符串的 html 字符,并使用该字符串使用如下所示的 parseXml 方法构建 DOM XML。接下来,我尝试将此 DOM 文档插入数据库。但是,当我这样做时,出现以下错误:
org.xml.sax.SAXParseException:序言中不允许引用。
我有三个问题:1)我不确定如何转义双引号。我试过 replaceAll("\"", """) 但不确定这是否正确。
2) 假设我想要一个以双引号开头和结尾的字符串(例如:“sony”),我该如何编码?我试过类似的东西:
字符串索尼 = "\"索尼\""
这样对吗?上面的字符串是否包含“sony”和双引号,或者是否有其他方法?
3) 我不确定“org.xml.sax.SAXParseException:序言中不允许引用”是什么。错误的意思。有人可以帮我解决这个问题吗?
谢谢,索尼
我的代码中的步骤:
实用程序。 Java
public static String escapeHtmlEntities(String s) { 返回 s.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\"", """). replaceAll(":", ":").replaceAll("/", "/");
public static Document parseXml (String xml) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xml)));
doc.setXmlStandalone(false);
return doc;
}
树 Controller .java
protected void notifyNewEntryCreated(String entryType) 抛出异常{ for (Listener l : treeControlListeners) l.newEntryCreated();
final DomNodeTreeModel domModel = (DomNodeTreeModel) getModel();
Element parent_item = getSelectedEntry();
String xml = Utils.escapeHtmlEntities("<entry xmlns=" + "\"http://www.w3.org/2005/atom\"" + "xmlns:libx=" +
"\"http://libx.org/xml/libx2\">" + "<title>" + "New" + entryType + "</title>" +
"<updated>2010-71-22T11:08:43z</updated>" + "<author> <name>LibX Team</name>" +
"<uri>http://libx.org</uri>" + "<email>libx.org@gmail.com</email></author>" +
"<libx:" + entryType + "></libx:" + entryType + ">" + "</entry>");
xmlModel.insertNewEntry(xml, getSelectedId());
XMLDataModel.java
public void insertNewEntry(String xml,String parent_id)抛出异常{ insertNewEntry(Utils.parseXml(xml).getDocumentElement(), parent_id);
public void insertNewEntry (Element elem, String parent_id) throws Exception {
// inserting an entry with no libx: tag will create a storage leak
if (elem.getElementsByTagName("libx:package").getLength() +
elem.getElementsByTagName("libx:libapp").getLength() +
elem.getElementsByTagName("libx:module").getLength() < 1) {
// TODO: throw exception here instead of return
return;
}
XQPreparedExpression xqp = Q.get("insert_new_entry.xq");
xqp.bindNode(new QName("entry"), elem.getOwnerDocument(), null);
xqp.bindString(new QName("parent_id"), parent_id, null);
xqp.executeQuery();
xqp.close();
updateRoots();
}
声明命名空间 libx=' http://libx.org/xml/libx2 ';声明命名空间 atom=' http://www.w3.org/2005/atom ';将变量 $entry 声明为 xs:anyAtomicType external;将变量 $parent_id 声明为 xs:string external;将变量 $feed 声明为 xs:anyAtomicType := doc('libx2_feed')/atom:feed;将变量 $metadata 声明为 xs:anyAtomicType := doc('libx2_meta')/metadata;让 $curid := $元数据/curid返回用 data($curid) + 1 替换节点 $curid 的值,让 $newid := data($metadata/curid) + 1返回插入节点 {$newid} { $条目// } 进入 $feed,让 $newid := data($metadata/curid) + 1返回 if ($parent_id = 'root') then ()别的 将节点 http://libx.org/xml/libx2'/> 插入 $feed/atom:entry[atom:id=$parent_id]//(libx:module|libx:libapp|libx:package)
最佳答案
要转义双引号,请使用在 XML 中预定义的 "
实体。
因此,您的示例字符串(比如属性值)将如下所示
<person name=""sony""/>
还有用于撇号/单引号的 '
。
我看到你有很多 replaceAll 调用,但替换似乎是一样的?还有一些字符不能按字面意思使用,但应该转义:
& --> &
> --> >
< --> <
" --> "
' --> '
(编辑:好的,我看到这只是格式化 - 实体在 SO 呈现时被转换为实际值。)
SAX 异常是解析器因无效的 XML 而提示。
除了转义文本,您还需要确保它符合 well-formedness rules的XML。有很多事情要做,所以使用第 3 方库来写出 XML 通常更简单。例如 dom4j 中的 XMLWriter .
关于java - org.xml.sax.SAXParseException : Reference is not allowed in prolog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3311781/
我的applicationContext.xml文件有问题。 classpath:configuration.properties
我对 JAXB 很陌生。我的经验非常好,但现在我在解码时遇到了一些问题。 我的类实现了以下接口(interface): public interface Attribute { public
我有一个服务可以解析 XML 并使用 exception.getMessage() (exception.getLocalizedMessage()) 生成包含解析器错误列表的报告(完全是 SAXPa
我编写了一个程序来读取一组源文件并使用 SrcML 工具将它们转换为 XML 文件。基本上流程如下。 for (------------------) { ------------------
原因:org.xml.sax.SAXParseException:cvc-complex-type.2.4.a:发现以元素“jr:table”开头的无效内容。需要 '{"http://jasperre
我在 Windows 10 上运行的 Java 1.8.0_191 程序中收到以下 UnmarshalException,该程序使用 jaxb2 Maven 插件版本 2.5.0 生成的类来处理传入的
您好,我正在使用 jena 读取 som rdf 文件: InputStream in = FileManager.get().open(adress); model.read(in,
在 hibernate.hbm.xml 文件中使用属性 version 和 timestamp 并运行程序时,出现异常。如果删除 version 属性,程序可以正常工作,但使用两者时会出现运行时错误。
我正在尝试使用 Spring Boot 开发一个应用程序,我有以下 html Hello AngularJS The ID is {{greeting.id}} The content
File xml = new File("C:/members.xml"); DocumentBuilderFactory documentBuilderFactory = Docum
我在一个 Maven 项目中工作。 Atm 我只有实体、映射和配置文件。我正在尝试使用 junit 测试我的 hibernate 映射。 我找不到问题。我可以在 netbeans 中验证 xml 文件
这是我的 Coldfusion Web 服务。当我使用soapUI工具调用'test'时,我收到了这个 "org.xml.sax.SAXParseException: Premature end of
我们有一个使用不同产品口味和产品类型的项目。当我选择特定口味时,会生成此错误: FAILURE: Build failed with an exception. * What went wrong:
可能相关: Grails - attempting to include HTPPBuilder - Linkage error 我正在尝试将XOM包含在我的grails项目中。我如何知道需要排除哪个
我正在尝试使用 DocumentBuilder 的 parse 方法解析 xml,该方法将 URI 作为参数。为此,我创建一个表示 URI 的 String 对象,然后调用 parse 方法,将 St
运行 xml-rcp 服务器和客户端。尝试将请求记录到服务器。但出现文件过早结束错误。谁能看出我做错了什么吗? public void doPost(HttpServletRequest req,
我正在尝试在 Mac OS X 10.10 中运行基本的 Jetty 应用程序。我正在关注这个例子 - http://www.codeproject.com/Articles/128145/Run-J
我正在关注“Professional Android Application Development”一书并尝试实现一些示例。在第 5 章第 151 页中,以下代码引发 SAXParseExcepti
所以我知道使用这个API,我在服务器上生成的一些xml文件可能会错误地生成,或者没有关闭一些标签,或者结构很糟糕。现在我的代码工作正常,但对于某些文件,其中一些 xml 文件会抛出这些错误,下面是错误
我正在使用 Play Framework 1.2.4 并尝试解析 SOAP 响应。 响应是: ... 当我尝试使用 play.libs.WS.HttpResponse.getXml() 解析
我是一名优秀的程序员,十分优秀!