Java 如何按ValueLength将基于行的文本转换为xml
我有一个有X行的文本文件。每行代表一个完整的数据集。 每条线路的结构如下所示:Java 如何按ValueLength将基于行的文本转换为xml,java,xml-parsing,xsd-validation,text-parsing,Java,Xml Parsing,Xsd Validation,Text Parsing,我有一个有X行的文本文件。每行代表一个完整的数据集。 每条线路的结构如下所示: - Person A (Line 1) - Type (1 char) - Firstname (50 chars) - Lastname (50 chars) - Adress (50 chars) - ... - Person B (Line 2) - ... 值之间没有分隔符。空/空值仅为其字段字符数的Y空格。 因此,如果没有空间,它可能看起来像: 1WaltherWhi
- Person A (Line 1)
- Type (1 char)
- Firstname (50 chars)
- Lastname (50 chars)
- Adress (50 chars)
- ...
- Person B (Line 2)
- ...
值之间没有分隔符。空/空值仅为其字段字符数的Y空格。
因此,如果没有空间,它可能看起来像:
1WaltherWhiteAlbuquerque...
现在,我希望它是一个XML文件,包含X个节点,比如[Person(Type,Firstname,…])。
是否可以编写一个“知道”charlength值的模板,然后将其分解为xml格式
是否可以编写一个“知道”charlength值的模板,然后将其解析为xml格式
当然。在XSLT 3.0中,类似的内容应该用作样式表的初始模板(未测试):
您的示例具有误导性,因为它与固定长度字段不匹配。firstname字段应包含“Walther”和43个空格。逐行读取文件并调用以提取每个字段。您可以使用删除尾随空格。这就是为什么我说“没有空格看起来像…”的原因,我知道这种方式,但是说第一部分的最好方式是类型,第二个名字。。。要生成xml文件,通常没有最好的方法。这取决于你想要什么。对于小的一次性脚本,硬编码字段可能是最简单的方法。对于一种灵活的通用方法,您可以实现一些字段类并从文件中读取配置。或者,您可以实现一些注释来为关系数据库表创建类似JPA的类映射。因此,请明确您想要什么,然后创建数据模型并实现功能。
<xsl:template name="readfile">
<xsl:variable name="lines"
as="xs:string*"
select="unparsed-text-lines('mycolumnbasedinput.txt')"
/>
<xsl:for-each select="$lines">
<xsl:element name="Person">
<xsl:element name="Type>
<xsl:value-of select="substring(.,1,1)"/>
</
<xsl:element name="Firstname">
<xsl:value-of select="substring(.,2,50)"/>
</
<xsl:element name="Lastname">
<xsl:value-of select="substring(.,52,50)"/>
</
<xsl:element name="Adress">
<xsl:value-of select="substring(.,102,50)"/>
</
...
</
</
</