获取xml文档的版本,编码

时间:2016-02-16 09:58:10

标签: xml coldfusion coldfusion-8

我必须从xml文档中读取编码和版本。

<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

即;编码应返回UTF-8,版本返回1.0

输入将是有效的xml文档。

请帮忙

2 个答案:

答案 0 :(得分:3)

ColdFusion使用的Java XML解析器通过getEncoding()getVersion()公开该信息。这将适用于ColdFusion,但不适用于Lucee或Railo。

    <cfsavecontent variable="foo">
    <?xml version="1.0" encoding="UTF-8"?>
        <note>
            <to>Tove</to>
            <from>Jani</from>
            <heading>Reminder</heading>
            <body>Don't forget me this weekend!</body>
        </note>
    </cfsavecontent>

    <cfset xml = XMLParse(trim(foo))>

    <cfdump var="#{
        encoding: xml.getEncoding(),
        version: xml.getVersion()
    }#">

在ColdFusion 10&amp; amp; 11。

答案 1 :(得分:1)

您可以将xml转换为字符串,然后执行正则表达式以获取版本和编码。

<cfsavecontent variable="foo">
<?xml version="1.0" encoding="UTF-8"?>
    <note>
        <to>Tove</to>
        <from>Jani</from>
        <heading>Reminder</heading>
        <body>Don't forget me this weekend!</body>
    </note>
</cfsavecontent>

<cfset xml = XMLParse(trim(foo))>   
<cfset xmlString = ToString(xml)>


<cfset Version = REMatchNoCase("version=""(.+?)""", xmlString) >
<cfset version = REMatch("(?s)"".*?""", Version[1]) >
<cfset version = replace(version[1],'"',"","all") > 
<cfdump var="#version#">


<cfset encoding = REMatchNoCase("encoding=""(.+)""", xmlString) >
<cfset encoding = REMatch("(?s)"".*?""", encoding[1]) >
<cfset encoding = replace(encoding[1],'"',"","all") >   
<cfdump var="#encoding#">