我目前正在使用DOM解析器来解析XHTML文档,例如:
final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
final DocumentBuilder db = dbf.newDocumentBuilder();
db.setEntityResolver(MY_ENTITY_RESOLVER);
db.setErrorHandler(MY_ERROR_HANDLER);
...
final Document doc = db.parse(inputSource);
我的问题是,当我的文档包含一个实体引用时,例如:
<p>€</p>
我的解析器为包含“€”而不是“&euro;”的内容创建了一个Text节点。这就是说,它正在按预期的方式解析实体(XHTML 1.0 Strict
DTD链接到ENTITIES Latin1 DTD,这反过来确定了“&euro;”与“€”的对等)。
问题是,我不希望解析器执行此类操作。 我想保留“&euro;” 文字未修改。
我已经尝试过:
final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setExpandEntityReferences(false);
但:
我不喜欢这样做,因为我担心这会使某些解析器实现无法从XHTML 1.0 Strict DTD 导航 到ENTITIES Latin1 DTD,因此不考虑“&euro;”。作为已 声明的 实体。
当我这样做时,它会奇怪地创建两个节点:一个“磅”实体节点和一个在其后带有“€”符号的文本节点。
有任何想法吗? 是否可以在DOM分析器中配置它而不用 预处理 XHTML并用所有“&”符号代替其他东西?
解决方案可以是DOM解析器,也可以是SAX解析器,我不介意使用SAX解析,然后使用转换来创建DOM。
另外,我不能切换到非标准的XML解析libray。没有jdom,没有jsoup,没有HtmlCleaner等。
非常感谢。
我采用的方法是用一个唯一的标记替换任何实体,Xerces将其视为纯文本。转换为Document对象后,标记将替换为Entity Reference对象。
请参阅http://sourceforge.net/p/commonclasses/code/14/tree/trunk/src/com/redhat/ecs/commonutils/XMLUtilities.java中的convertStringToDocument()函数。
对于任何一个 ORM 工具,大都是根据配置者约定了解你打算怎么把一张数据表与你的 Java 对象 映射到一起。默认的 Nutz.Dao 采用 Java 注解(Annotation) 的方式描述这个映射,但是,当然 世界上还有很多其它的映射方式,比如用各种配置文件,比如 JPA 的注解,或者你很想把这个 映射关系写在数据库的几张表里,甚至一个 Excel 表格里(你就觉得这样很酷) 从 1.b.38
问题内容: 对于stackoverflow社区,我创建了此方法以将一些EditText字段翻倍。我添加了if语句专门用于避免解析错误,因为我知道我的几个EditText字段将留为空白。但是,它们仍然在运行时继续运行。有人知道避免解析空白字段的正确方法吗?非常感谢你。 问题答案: 你为什么不尝试这样的事情? 编辑:请注意,这未经测试…此处没有编译器。:’( 由于如果字符串为null,则抛出Numbe
我有一个输入json字符串,其中包含几个已经转义的特殊字符和一些未转义的特殊字符(如en-dash/em-dash)。解析此json字符串(需要解析此字符串以检索对象数组)后,它将具有特殊字符的字符串转换为Unicode值(例如,将短划线字符转换为2013)。我的要求是不要转义任何特殊字符,并保持其他已转义字符不变。简单来说,在解析JSON字符串后,内容不应更改。 请建议一些方法来处理这个问题。
我想在一个项目中封装实体框架。这个项目将单独进行数据库访问。更新的时候,我想把一个域模型映射到EF。目的是解决方案的其他层不应该了解基础结构。 我的问题是我需要在我的“调用者”项目中引用EF使其工作。 有没有办法避免这种情况? 解决方案-ConsoleProject-EntityFrameworkProject(来自Nuget的EF)
现在,如果我查询集合中的特定文档,对动物的引用会自动解析吗?我会在查询结果中得到动物的名字吗?如果不是,我如何做到这一点?
我正在Android Studio中尝试Kotlin和Kotlin Android扩展。我在Ubuntu 14.04上的Android Studio v1.5.1和OS X El Capitan上的Android Studio v1.5.1中都进行了尝试,得到了相同的结果。 下面是我正在做的事情: null 然后进入生成的content_main.xml文件,并为“hello World!”添加一