相关疑难解决方法(0)

错误解析/page.xhtml:跟踪错误[line:42]引用了实体"nbsp",但未声明

我想在我的JSF页面中使用非中断空格.我知道,在纯HTML中,我可以使用 这个,这很好.但是,当我将它们 放在Facelets页面中时,它会出现如下错误:

错误解析/page.xhtml:错误跟踪[第42行]引用了实体"nbsp",但未声明.

这是怎么造成的,我该如何解决?

jsf facelets html-entities jsf-2

82
推荐指数
5
解决办法
6万
查看次数

是否有Java XML API可以在不解析字符实体的情况下解析文档?

我有程序需要解析包含字符实体的XML.程序本身不需要解决它们,它们的列表很大并且会发生变化,所以如果可以的话,我想避免明确支持这些实体.

这是一个简单的例子:

<?xml version="1.0" encoding="UTF-8"?>
<xml>Hello there &something;</xml>
Run Code Online (Sandbox Code Playgroud)

是否存在可以在不解析(非标准)字符实体的情况下成功解析文档的Java XML API?理想情况下,它会将它们转换为可以特殊处理的特殊事件或对象,但我会选择一种可以默默抑制它们的选项.

答案和示例:

Skaffman给了我答案:使用IS_REPLACING_ENTITY_REFERENCES设置为false 的StAX解析器.

这是我试图尝试的代码:

XMLInputFactory inputFactory = XMLInputFactory.newInstance();
inputFactory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, false);
XMLEventReader reader = inputFactory.createXMLEventReader(
    new FileInputStream("your file here"));

while (reader.hasNext()) {
    XMLEvent event = reader.nextEvent();
    if (event.isEntityReference()) {
        EntityReference ref = (EntityReference) event;
        System.out.println("Entity Reference: " + ref.getName());
    }
}
Run Code Online (Sandbox Code Playgroud)

对于上面的XML,它将打印" Entity Reference: something".

java xml parsing stax character-entities

4
推荐指数
1
解决办法
1万
查看次数

Java XML - 将字符转换为实体

我有以下 XML:

<root><super-head>Text ?? and "more" ??</super-head></root>
Run Code Online (Sandbox Code Playgroud)

还有一些实体(实际超过400件):

? = &star;
? = &heart;
" = &quot;
? = &quest;
- = &hyphen;
Run Code Online (Sandbox Code Playgroud)

现在我想用它们的实体替换列表中的所有字符。最初我尝试使用正则表达式来做到这一点,但它不起作用。所以我假设必须使用Java或XSLT(我这里只能使用1.0)。

在 Java 中,我尝试了以下操作:

public void replaceStringForNode(Node node, Map<String, String> map) {
    // replace for all attributes
    NamedNodeMap attributes = node.getAttributes();
    for (int i = 0, l = attributes.getLength(); i < l; i++) {
        Node attr = attributes.item(i);
        String content = attr.getNodeValue();
        for (Entry<String, String> entry : map.entrySet()) {
            content = content.replace(entry.getKey(), entry.getValue());
        }
        attr.setNodeValue(content);
    }

    // …
Run Code Online (Sandbox Code Playgroud)

java xml xslt entity

0
推荐指数
1
解决办法
959
查看次数

标签 统计

java ×2

xml ×2

character-entities ×1

entity ×1

facelets ×1

html-entities ×1

jsf ×1

jsf-2 ×1

parsing ×1

stax ×1

xslt ×1