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

时间:2015-06-15 17:34:52

标签: javascript xml xslt

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

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

来自textarea

输入文字

Ax00100200300400 Phillipe Waken Brunn

需要像以下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. 单击按钮以触发功能
  4. 文本内容将转换为同一textarea
  5. 上的XML文件

1 个答案:

答案 0 :(得分:0)

鉴于非常简单的要求,以及您希望在客户端(即在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的文本操作函数通常会更容易使用,你将能够进行各种逻辑检查(例如,检查以确保{{ 1}}有四个成员,检查以确保字符串不会太长等等)并向用户提供有关错误的即时反馈,并且您生成的XML不是很复杂(没有循环/重复结构,没有复杂的模板匹配要求)。