Java 如何按ValueLength将基于行的文本转换为xml

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

我有一个有X行的文本文件。每行代表一个完整的数据集。 每条线路的结构如下所示:

 - 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)"/>
      </
      ...
    </
  </
</