我有一个XML文件中像下面解析XML:需要与HTML元素
<?xml version="1.0"?>
<Book>
<Title>Ulysses</Title>
<Author>James <b>Joyce</b></Author>
</Book>
我需要使用Java这个解析成一个POJO像
title="Ulysses"
author="James <b>Joyce</b>"
换句话说,我需要在解析时,html或可能的自定义xml标记保持为纯文本而不是xml元素。
我根本无法编辑XML,但可以创建自定义xslt文件来转换xml。
我已经得到了使用XSLT协助的XML阅读下面的Java代码,
TransformerFactory factory = TransformerFactory.newInstance();
Source stylesheetSource = new StreamSource(new File(stylesheetPathname).getAbsoluteFile());
Transformer transformer = factory.newTransformer(stylesheetSource);
Source inputSource = new StreamSource(new File(inputPathname).getAbsoluteFile());
Result outputResult = new StreamResult(new File(outputPathname).getAbsoluteFile());
transformer.transform(inputSource, outputResult);
这不我的XSLT适用于被写入了文件,但我不能拿出用正确的xslt来做到这一点。我看了一下Add CDATA to an xml file,但这对我不起作用。
从本质上讲,我相信我想要的文件看起来像
<?xml version="1.0"?>
<Book>
<Title>Ulysses</Title>
<Author><![CDATA[James <b>Joyce</b>]]></Author>
</Book>
然后我可以提取 "James <b>Joyce</b>"
。我尝试了这里建议的方法:Add CDATA to an xml file 但它没有为我工作。
我用下面的XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
<xsl:template match="Author">
<xsl:copy>
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:copy-of select="*"/>
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</xsl:copy>
</xsl:template>
,并由此产生:
<?xml version="1.0" encoding="UTF-8"?>
Ulysses
<Author><![CDATA[
<b>Joyce</b>]]></Author>
可以请你帮助呢?我想要将原始文档全部写出来,但是CDATA包含作者元素中的所有内容。 感谢
什么是“它没有为我工作”是什么样子?带有标记的XML不是正确的XML。你可以逃脱那些魔法角色或者包装在CDATA中。没有其他选择。 – duffymo