我正在处理的遗留系统有一块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"
>
答案 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代码都可以更简单。