我发誓我已经看过现有的线程!但我仍然需要帮助。XML到CSV转换,并发症
我需要采取一些非常混乱的XML,并将其转换为一个非常整洁的CSS文件上传到网站数据库。
我并不需要一个完整的解决方案,但我需要帮助理解我应该遵循的过程来解决我在XSLT中的问题。我不会要求所有人为我编码,只是告诉我需要的元素和模板结构。如果社群能够解释流程背后的逻辑,我也会喜欢,以便我可以根据需要对其进行修改。
我有一个在所有的订单记录和数字XML:
<record-list>
<record>
<title>Title One</title
<author>Author One</author>
<subject>
Subject One A
Subject One B
Subject One C
</subject>
<subject>Subject Two</subject>
<subject>Subject Three</subject>
<subject>Subject Four</subject>
</record>
<record>
<subject>Subject Five</subject>
<title>Title Two</title>
<useless-element>Extra Stuff One</useless-element>
</record>
<record>
<title>Title Three</title>
<subject>Subject Six</subject>
<author/>
</record>
</record-list>
所以我有重复的元素,一些缺少的元素,一些空元素,元素无序,以及额外的一些元素的多个号码换行符。
我需要的CSV文件,其如下文中读取,或具有不同数目的受试者重复(参见下面的要求),用于最终输出
"Title","Subject","Subject","Subject","Author"
"Title One","Subject One A ; Subject One B ; Subject One C","Subject Two","Subject Three","Author One"
"Title Two", "Subject Five","","",""
"Title Three","Subject Six","","",""
要求
-The列数任何重复的元素或者需要将该记录与该元素的最重复进行匹配,或者该程序需要切断超过特定数目的任何重复。 - 每个新记录都需要一个换行符,并且文件中不能存在其他换行符(仅作为记录定界符)。 - 每个记录的每个元素需要以相同的顺序排列。 - 每个元素文本需要引号(以处理内在的逗号)。 - 缺陷或空元素需要空白,逗号包围引号。 - 额外的元素不能通过发送到输出
我做了什么:
我想通了如何摆脱使用翻译功能的元素中多余的换行符,虽然我很喜欢这个解决方案,它允许我用多个字符替换换行符(现在,我将不得不运行find-and-replace来将占位符字符更改为输出中的空格 - 分号空格)。我可以使用文本元素和strip-whitespace在输出中获得引号,逗号和换行符。
但是,我不知道如何理顺元素的顺序,处理元素重复,或者只穿透一些元素,同时仍然使用元素作为换行的提示。
现在,我只需要一个可行的解决方案,即使需要各种手动操作或多个样式表。只要输出是好的,我甚至可以在文本编辑器中进行查找和替换。请帮助一个XSLT解决方案,我甚至不会开始知道任何其他合适的编程语言(多年前的大学matlab没有帮助)。
我想我需要运行两个转换。我查看了XSLT圣经,Mangano的XSLT Cookbook,他使用了两个变换来解决类似的问题。但是,他的解决方案如此广泛,我无法理解。如果我无法弄清楚它是如何工作的,我不能根据我的需要进行修改。对不起,但没有编程背景,本网站和文本中的解释充其量是充满挑战的。不过,与其他人在本论坛上询问的相比,我认为我提出了一些新颖的功能问题。
任何帮助,无论是非广义的代码,或者甚至只是一个建议的程序,通过我的处理器多次运行将是美好的。我一直在为此奋斗了一个多星期,而且取得的进展甚微。
感谢 CAMC
我知道这是一个编码问答网站,也许你真的想编码自己的答案,但一个快速的谷歌'xml到csv'抛出了一些可能有用的工具,例如。 [XML Converter](http://www.xml-converter.com/?from=adwords) –