我有一個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