使用xslt从xml中提取和格式化日期

时间:2010-02-25 16:20:29

标签: xml xslt

我正在处理的遗留系统有一块xml,其中有一些嵌入其中一个节点的数据,这些节点使用自己的格式 - 出于某种原因或其他原因。我需要提取信息,然后重新格式化日期。

这是xml:

<Information>
[OB]LGW|Sun 23, May 2010|11:15|MCO|Sun 23, May 2010|15:25[/OB]
</Information>

我需要把它转换成这样:

<Flight 
  ArrivalDateTime="2010-05-16T15:35:00"
  DepartureDateTime="2010-05-16T11:30:00"
  DirectionInd="Outbound"
  RPH="1" 
  TravelCode="24"
  Type="Charter"
>

3 个答案:

答案 0 :(得分:0)

由于日期不同,我假设示例原始&amp;熟食格式实际上并不是“相同”的数据。此外,您的问题仅涉及日期:您是否期望解析起源和时间;目的地机场代码也是?

无论哪种方式,由于数据是非XML格式,您不会得到XML解析器来解析它。也就是说,XML解析器会将数据识别为信息元素节点的Text节点子节点,但是没有XML工具可以知道如何分开文本。为此,您需要编写自己的解析器。

答案 1 :(得分:0)

XPath function tokenize()可能对您有用,以及substring-after和substring-before。

答案 2 :(得分:0)

每当我看到这样的XML文档时,我的第一个冲动就是让创建它的人完成他的工作。说真的,它是2010年。很久以前,如果你需要生成XML,那就意味着你生成了可用的XML,而不是你的seekrit私有格式的数据,这些数据包含了标签。发出这样的东西是懒惰和轻蔑的。

当然,并不总是能让人们像负责任的专业人士一样行事。我的第二种方法是预处理XML并在它到达XSLT之前修复它,或者修改任何其他期望合理构造的XML的代码。这使我不必弄清楚如何使XSLT做从未设计过的事情。这也意味着下游处理这些数据的任何非XSLT代码都可以更简单。