将纯文本输入字符串转换为 XML

Transform plain text input string into XML

本文关键字:转换 XML 字符串 输入 文本      更新时间:2023-09-26

我必须使用模板 XSLT 文件和客户端转换将文本值从 <textarea> 标记(每个标记具有不同的长度并用空格分隔)传递到 XML 文件。

为此,需要将输入文本转换为 XML,如以下示例所示:

textarea输入文本

Ax00100200300400 菲利普·韦肯·布伦

需要像以下 XML 一样插入作为响应,与输入文本相同的textarea

<?xml version="1.0" encoding="utf-8"?>
<MainRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <Request version="1.0">
      <Products>
         <Server xsi:noNamespaceSchemaLocation="">
            </TRX>
               <Number>Ax00100200300400</Number>
            </TRX>
            <Applicant>
               <Name>
                  <Surname>Waken</Surname>
                  <First>Phillipe</First>
                  <Middle>Brunn</Middle>
               </Name>
            </Applicant>
         </Server>
      </Products>
   </Request>
</MainRequest>

预期的工艺流程如下:

  1. 客户端在textarea中粘贴纯文本
  2. 单击按钮以触发函数
  3. 文本内容在同一textarea上转换为XML文件。
鉴于非常简单

的要求,以及您似乎希望在客户端(即在Web浏览器中)完成所有这些操作的事实,我可能只会使用直接的JavaScript来执行此操作。 例如:

var headerPart = "<?xml version='"1.0'" encoding='"utf-8'"?><MainRequest xmlns:xsi='"http://www.w3.org/2001/XMLSchema-instance'"><Request version='"1.0'"><Products><Server xsi:noNamespaceSchemaLocation='"'"><TRX><Number>";
var surnamePart = "</Number></TRX><Applicant><Name><Surname>";
var firstnamePart = "</Surname><First>";
var middlenamePart = "</First><Middle>";
var footerPart = "</Middle></Name></Applicant></Server></Products></Request></MainRequest>";
var textToParse = $("#textAreaId").val();
var textPieces = textToParse.split(" ");
var xmlToSet = headerPart + textPieces[0] + surnamePart + textPieces[3] + firstnamePart + textPieces[1] + middlenamePart + textPieces[2] + footerPart;
$("#output").val(xmlToSet);

JSFiddle

如果需要在 XML 字符串片段中添加格式字符,请执行此操作(例如,使用 'r'n't 使用带有制表符的新行)。 我真的不明白你为什么要使用 XSLT - JavaScript 的文本操作函数通常会更容易使用,您将能够进行各种逻辑检查(例如,检查以确保textPieces有四个成员,检查以确保字符串不会太长等)并向用户提供有关错误的即时反馈, 而且您正在生成的XML不是很复杂(没有循环/重复结构,没有复杂的模板匹配要求)。