我有一个包含字符串值的文本文件:
January
February
March
我想从文本文件中提取这些字符串并将其添加到xml文档中,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
<test name="Test" preserve-order="true">
<classes>
<class name="January"/>
<class name="February"/>
<class name="March"/>
</classes>
</test>
</suite>
我不确定应该采用哪种流程来获得上述结果,请帮忙?
答案 0 :(得分:1)
使用XSLT 3.0(与Saxon 9.7 PE和EE一起使用)或使用Exselt,您可以使用
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:math="http://www.w3.org/2005/xpath-functions/math"
exclude-result-prefixes="xs math"
version="3.0">
<xsl:output method="xml" doctype-system="http://testng.org/testng-1.0.dtd" indent="yes"/>
<xsl:template name="main">
<suite name="Suite" parallel="none">
<test name="Test" preserve-order="true">
<classes>
<xsl:apply-templates select="unparsed-text-lines('input.txt')"/>
</classes>
</test>
</suite>
</xsl:template>
<xsl:template match=".[. instance of xs:string]">
<class name="{normalize-space()}"/>
</xsl:template>
</xsl:stylesheet>
使用Saxon 9或XmlPrime或Altova提供的XSLT 2.0,您可以使用
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="xml" doctype-system="http://testng.org/testng-1.0.dtd" indent="yes"/>
<xsl:template name="main">
<suite name="Suite" parallel="none">
<test name="Test" preserve-order="true">
<classes>
<xsl:for-each select="tokenize(unparsed-text('input.txt'), '\r?\n')">
<class name="{normalize-space()}"/>
</xsl:for-each>
</classes>
</test>
</suite>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:-1)
如果我理解你,这里唯一改变的就是班级名称。
我创建了一个简单的脚本,用逗号分隔所有字符串并创建单独的类。
您只需要复制文档中的文本并将其添加到新变量中,脚本将完成剩下的工作。
<script>
var text = "example variable with some text";
var partsOfStr = text.split(' ');
for(i=0; i<partsOfStr.length; i++){
document.write("<class name=""+partsOfStr[i]+""/><br>");
}
</script>