java - 为什么在执行 XSLT 转换时会出现 "Premature End of File"错误?

标签 java xml parsing-error

获取行#-1;列#-1; xslt 转换时文件过早结束

XSL:

<xsl:template match="/">
    <html>
        <head>
            <title>Real's HowTo</title>
        </head>
        <body>
            <table border="1">
                <tr>
                    <th>Titleamit</th>
                    <th>Link</th>
                </tr>
                <xsl:for-each select="mx:feed/mx:entry">
                    <tr>
                        <td>
                            <xsl:value-of select="mx:title" />
                        </td>
                        <td>
                            <xsl:value-of select="mx:published" />
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
        </body>
    </html>
</xsl:template>

XML:

<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:clearspace="http://www.jivesoftware.com/xmlns/clearspace/rss"
xmlns:dc="http://purl.org/dc/elements/1.1/">
    <title>
        Sprint Community: Space Polls - Android
    </title>
    <link rel="alternate" href="http://community.sprint.com/baw/poll.jspa?containerType=14&container=2130" />
    <subtitle>
        List of polls
    </subtitle>
    <id>
        http://community.sprint.com/baw/poll.jspa?containerType=14&container=2130
    </id>
    <generator uri="http://jivesoftware.com/products/clearspace/" version="4.5.4.1">
        Jive SBS
    </generator>
    <updated>
        2010-02-08T17:30:00Z
    </updated>
    <dc:date>
        2010-02-08T17:30:00Z
    </dc:date>
    <dc:language>
        en
    </dc:language>
    <entry>
        <title>
            What's Valuable
        </title>
        <link rel="alternate" href="http://community.sprint.com/baw/poll.jspa?poll=1062" />
        <author>
            <name>
                wengla02
            </name>
            <uri>
                /people/wengla02
            </uri>
            <email>
                noreply-buzz@sprint.com
            </email>
        </author>
        <updated>
            2010-02-08T17:30:00Z
        </updated>
        <published>
            2010-02-08T17:30:00Z
        </published>
        <summary type="html" />
        <dc:date>
            2010-02-08T17:30:00Z
        </dc:date>
        <clearspace:dateToText>
            1 year, 2 months ago
        </clearspace:dateToText>
        <clearspace:objectType>
            0
        </clearspace:objectType>
    </entry>
</feed>

Java代码:

// load xslt fromxsltFilePath
url = getClass().getClassLoader().getResource("com/sprint/mysprint/phoneMedia/myPhoneAndMedia/xsl/announcementFeed.xsl");

BufferedInputStream bis3= new BufferedInputStream(url.openStream());

if (isLoggingDebug()) {
    BufferedInputStream bis1= new BufferedInputStream(url.openStream());
    byte[] buffer1 = new byte[1024];
    int bytesRead1 = 0;

    while ((bytesRead1 = bis1.read(buffer1)) != -1) {
        String chunk1 = new String(buffer1, 0, bytesRead1);
        logDebug(" " + chunk1);
    }
}

TransformerFactory transformerFactory = TransformerFactory.newInstance();

// create xslt Template
Templates template = transformerFactory.newTemplates(
  new StreamSource(new DataInputStream(url.openStream())));

// Create Transformer 
Transformer transformer = template.newTransformer();
transformer.transform(
  new StreamSource(bis), new StreamResult(xhtmlContent));

最佳答案

& 符号在您的 xml 中未转义。您应该将它们更改为 & 以便能够解析 xml 数据,否则它将无法工作。 在解析和转换、包装等之后,您可以通过将这些字符改回来来更新结果。

关于java - 为什么在执行 XSLT 转换时会出现 "Premature End of File"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5633809/

相关文章:

java - SSLSocket如何像Socket.sendUrgentData()一样发心连接

java - 如何解决实现画中画功能时的宽高比问题?

xml - 如何在 unix 中安装 libxml2

C# - 在另一个类中调用/编写反序列化方法

c++ - 使用宏的 C++ 插件获取解析错误

javascript - 我可以使用 Javascript 检测 XHTML 解析错误吗?

java - 从 CSV 解析 Double 会抛出 RuntimeException

java - 静态变量生成: non-static variable this cannot be referenced from a static context error

java - 当我发送推送时 android 应用程序崩溃

java - Java 中的通用接口(interface)