如何在java中创建xml元素时规范化和



我正在使用org.w3c.dom.Document和创建文本节点时构建xml

Document xmlDocument;//This has document 
Node xmlNode = Document xmlDocument.getDocumentElement();
xmlNode.appendChild(getDocument().createTextNode(value));

如果文本值具有"abcrn"则代替r xml字符代码"
"将入。 因此,当在XML上应用XSLT转换时,其

[Fatal Error] :103:320: Character reference "
" is an invalid XML character.

同样,我对这个角色""也有问题,这是我的xslt:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:strip-space elements="*" />
    <xsl:output indent="yes" />
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>
    <xsl:template
        match="*[not(descendant-or-self::*[text()[normalize-space()] | @*])]">
        <!-- process element and descendants in mode for debugging -->
        <xsl:apply-templates select="." mode="debug" />
    </xsl:template>
    <xsl:template match="*" mode="debug">
        <xsl:message terminate="no">
            Deleting
            <xsl:value-of select="local-name()" />
            .
        </xsl:message>
        <xsl:apply-templates select="*" mode="debug" />
    </xsl:template>

</xsl:stylesheet>

除了我还有另一个问题,在生成 xml 后,它会从子元素中删除命名空间声明,例如:

<head xmlns:test="">
<body>
   <p-elm xmlns:xyz=""></p-elm>
</body>

<p-elm> XML 命名空间被删除。

任何建议都将得到:)

应用转换的代码段:

DOMSource domSource = new DOMSource(getDocument());
TransformerFactory tf = TransformerFactory.newInstance();
        if(source != null){
            //Templates template = tf.newTemplates(source);
            Templates template = tf.newTemplates(new StreamSource(this.getClass().getResourceAsStream(source)));
            serializer = template.newTransformer();
        }else{
            serializer = tf.newTransformer();
        }
        if (outputProperties != null) {
            Iterator iter = outputProperties.entrySet().iterator();
            while (iter.hasNext()) {
                Entry entry = (Entry) iter.next();
                serializer.setOutputProperty((String) entry.getKey(), (String) entry.getValue());
            }
        }
        //XmlUtil.prettyFormat(reader, writer);
        serializer.transform(domSource, streamResult);

这里source xslt path

根据 XML

规范(第 2.2 节),&#2; 不是有效的 XML 字符,但&#13;是有效的,不应给出错误。这意味着您不允许放置任何 &#2; XML 文档中的字符,即使在 Java 中使用2字符也是有效的。

有效 XML 字符的定义是:

法律字符是制表符、回车符、换行符和合法字符 Unicode 和 ISO/IEC 10646 的字符。

&#13; 是一个回车符(与 XML 中的回车&#xD;或 Java 中的回车r相同)

试图运行您的代码以查看会发生什么,但它无法编译并且缺少太多部分,以至于我无法轻松手动修复。

最新更新