`
kang
  • 浏览: 472527 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

读取XSL文件指定节点(Subject)的值

    博客分类:
  • NBS
阅读更多

调用方:

//以URL形式获取到连接到邮件文本xsl文件的URL(绝对路径)
URL stylesheetUrl = MailTransformer.class
                .getResource("/jp/co/。。。/sourcing/mail/cbmnMailBody.xsl");
。。。
            // メールのタイトル
            String subject = mailTransformer.getSubject(stylesheetUrl);

-》从指定的XSL文件中,将指定节点的值读取出来。(20090511追加)

 

 

<!-- -->

基础服务提供方:

    public String getSubject(URL stylesheetUrl) throws IOException, XPathExpressionException, ParserConfigurationException, SAXException {
        String ret = null;
        InputStream stylesheetInputStream = null;
        try {
  // Opens a connection to this URL and returns an InputStream for reading from that connection.
  // 执行完这句话之后,相当于一根管道接到了stylesheetUrl指向的文件上(网络文件),准备从该文件中读取数据
            stylesheetInputStream = stylesheetUrl.openStream();
            // 将输入流作为参数传入,从中读取出Subject给程序
            ret = getSubject(stylesheetInputStream);
        } finally {
            IOUtils.closeQuietly(stylesheetInputStream);
        }
        return StringUtils.trim(ret);
    }

  -》根据传入的URL参数,将subject返回给调用方。(20090511追加)

 

 

邮件标题实际处理方法:

public String getSubject(InputStream stylesheetInputStream) throws ParserConfigurationException, XPathExpressionException, SAXException, IOException {
        // Create a new input source with a byte stream.
        InputSource source = new InputSource(stylesheetInputStream);
        // Obtain a new instance of a DocumentBuilderFactory.
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        // Specifies that the parser produced by this code will provide support for XML namespaces.
        factory.setNamespaceAware(true);
        
        // Creates a new instance of a DocumentBuilder  using the currently configured parameters.
        DocumentBuilder builder = factory.newDocumentBuilder();
        // Parse the content of the given input source as an XML document and return a new DOM Document object.
        Document doc = builder.parse(source);
        
        
     // Get a new XPathFactory instance using the default object model, DEFAULT_OBJECT_MODEL_URI, the W3C DOM.
        XPathFactory pathFactory = XPathFactory.newInstance();
      // Return a new XPath using the underlying object model determined when the XPathFactory was instantiated.
        XPath xpath = pathFactory.newXPath();
        // Establish a namespace context.
   xpath.setNamespaceContext(new NamespaceContextProvider("xsl", "http://www.w3.org/1999/XSL/Transform"));
        
        // Compile an XPath expression for later evaluation.
        XPathExpression subjectPathExpression = xpath.compile("//xsl:stylesheet/xsl:template");
        // Evaluate the compiled XPath expression in the context of the specified InputSource and return the result as the specified type.
        // 此时就将xsl文件的固定内容读出来了
        NodeList nodeList = (NodeList) subjectPathExpression.evaluate(doc, XPathConstants.NODESET);
        
        
        Node node;
        String ret = null;
        // 对根节点(可能有多个)进行处理
        // 此例中,为“<xsl:template match="/">”和“<xsl:template match="Subject">”
        for (int i = 0, length = nodeList.getLength(); i < length; i++) {
            node = nodeList.item(i);
            if ("Subject".equals(node.getAttributes().getNamedItem("match").getNodeValue())) {
                // 找到节点名称为“Subject”的,将其内容(比如“結果通知”)都出来。
                ret = node.getTextContent();
                break;
            }
        }
        return ret;
    }

  -》上述这个方法就是具体的处理过程,从指定的xsl文件(输入流)中,将指定节点的值读取出来,返回回去。(20090511追加)

 

 

XSL文件的内容(相关部分)为下:

<?xml version="1.0" encoding="Shift_JIS"?>
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:space="preserve">
        <xsl:output method="text"/>
 
<xsl:variable name="strTitleName" select="root/title"/>
 
<xsl:template match="/">
。。。。。。
 
===============================================
結果通知                
===============================================
 
。。。。。。
 
</xsl:template>
 
 
 
<xsl:template match="Subject">
        結果通知
</xsl:template>
 
</xsl:stylesheet>

-》和想读取节点subject相关的部分。(20090511追加) 

 

<!-- --><!-- --> <!-- -->

这样一圈下来后,就能将 XSL文件中写好的邮件 Subject 結果通知 )读取到程序中来了。

 

 

分享到:
评论

相关推荐

    java读取xsl文件,读取文档

    在Java编程中,读取XSL(eXtensible Stylesheet Language)文件是常见的任务,尤其是在处理XML数据转换时。XSL文件用于定义XML数据的样式和布局,通过与XML文件结合,可以生成HTML、PDF或其他格式的输出。在本案例中...

    phpExcelReader(一个读取Excel xsl文件内容的一个PHP类)

    **phpExcelReader** 是一个基于PHP的开源库,专门用于读取旧版的Microsoft Excel文件,即.xsl格式的文件。这个库为开发者提供了一种简单的方法来处理和解析Excel文件的内容,使得在PHP环境中无需依赖其他软件或库就...

    java 读取Ftp指定位置的文件解析并入库

    通过上述步骤,可以编写一个完整的Java程序,实现从FTP服务器下载指定文件,解析文件内容,并将数据存入数据库的功能。同时,为了提高代码质量和可维护性,遵循良好的编程规范和设计模式也很重要。在实际开发中,还...

    xsl.rar_excel 数组 java_java xsl_java 表格_为什么读不了XSL文件

    在Java中,处理XSL文件通常需要使用XPath(XML Path Language)来定位XML节点,以及XSLT处理器如Saxon或Apache Xalan来执行转换。例如,你可以使用以下代码片段加载XSL文件并应用到XML上: ```java import javax....

    omml2mml.xsl文件

    为啥下载非要资源分,我想弄0分不可以?这个文件就是安装word之后里边的文件,在word文件夹安装目录下,比如C:\Program Files (x86)\Microsoft Office\root\Office16

    xsl文件

    xsl文件看看有什么错误

    powerbuilder-保存为pdf和xsl文件

    ### PowerBuilder保存为PDF与XSL-FO文件详解 #### 一、PowerBuilder与PDF/XSL-FO转换功能概述 PowerBuilder是一款强大的企业级开发工具,广泛应用于快速应用开发(RAD)环境中。随着版本更新,PowerBuilder 9引入...

    omml转换mml需要的xsl文件

    标题中的“omml转换mml需要的xsl文件”指的是一个转换过程,涉及XML文档对象模型(OMML)和MathML(数学标记语言)之间的互换。OMML是Microsoft Office中用于表示公式和数学表达式的格式,而MML是W3C推荐的标准化...

    xml_popup.rar_javascript xml_xml xsl_xsl_xsl javascript

    可以获取当前节点的位置,而且还能限制显示特定位置的节点,例如有18条记录,可以在xsl中设置只显示第1-6条,也可以设置只显示第7-12条,再配合客户端脚本,就可以动态改变xsl文档中控制显示指定位置节点的属性,...

    XSL开发基础参考资料

    以及输出元素(如`&lt;xsl:text&gt;`、`&lt;xsl:value-of&gt;`),用于插入文本或节点的值到输出文档中。理解并熟练使用这些元素,能帮助开发者构建出功能强大的转换规则。 **XPath**: XPath是XML路径语言,用于在XML文档中...

    javaxml,xsl,html文件转换[定义].pdf

    // 实现从 XML 文件中读取数据 } public String returnXml(String xmlStr, String xslFileName, String encoding) throws Exception { // 实现将 XML 字符串转换为 HTML 字符串 } ``` Java XML、XSL、HTML 文件...

    网页XSL基础教程,支持XML和XSL

    这段代码使用了Microsoft XML DOM对象来处理XML和XSL文件,并最终通过`transformNode`方法完成转换。 **在服务器端的示例代码** 为了实现在服务器端的转换,可以使用以下ASP脚本代码: ```asp ' 加载XML文件 Set...

    读取xls和xlsxjar包

    在Java编程中,处理Excel文件是一项常见的任务,无论是读取数据、写入数据还是进行复杂的分析。Excel有不同版本,最常见的是xls(Excel 97-2003格式)和xlsx(Excel 2007及以上版本的OpenXML格式)。这两种格式的...

    ASP.NET读取XML文件4种方法

    ### ASP.NET读取XML文件4种方法 在ASP.NET中,读取XML文件是一种常见的需求,主要用于解析数据、配置信息等。本文将详细介绍四种不同的方法来实现这一功能:使用XML控件、DOM(文档对象模型)、DataSet以及XML Text...

    xsl使用示例代码

    模板定义了输出的新结构,选择器则决定了哪些XML元素应被匹配并应用模板,而模式则是选择器的一种表达方式,用于指定XML元素的路径。 1. **模板(Templates)**:模板是XSL中定义输出格式的关键部分。例如,我们...

    xml xsl网页生成

    - **XPath(XML路径语言)**:用于在XML文档中查找信息的语言,支持选取节点、节点集以及计算值。 3. XSLT转换过程: - **匹配与选择**:XSLT通过XPath表达式来匹配XML文档中的元素,决定哪些元素需要被处理。 -...

    读取和修改xml文件

    XSLT(XSL Transformations)则用于转换XML文档,将源XML按照指定的样式表转换成新的XML或HTML。 9. **错误处理和验证** 在读取和修改XML时,应考虑异常处理,如文件不存在、格式错误等。此外,可以使用XML Schema...

    xsl学习

    压缩包内的文件“XSL(一)”可能是第一部分的学习资料,可能包含了一些基础的XSLT教程,例如解释XSLT的工作原理,展示如何创建基本的模板,以及演示如何使用XSLT进行简单的XML到HTML的转换。这些内容对于初学者来说...

    从access数据库读取数据写入xsl

    从access数据库读取写入xls表格,可以借鉴参考,对xls操作和access读写有学习借鉴的地方,写xls有几种方法,我的是一张表全部封装为一个range一次写入,速度很快,如果一个单元格一个单元格的写的话非常慢。

    java j2ee poi xsl excel 文档操作 包括上传 下载

    - **文件下载**:当用户请求下载时,服务器端会读取文件内容并设置响应头,指定Content-Type和Content-Disposition,确保浏览器正确地处理和呈现文件。 5. **安全性与优化**: - 安全性:在处理用户上传的文件时...

Global site tag (gtag.js) - Google Analytics