我的应用程序使用的文件格式是基于Xml的。我刚买了一个有拙劣的xml文件的客户。该东西包含近90,000行,由于某种原因,随机散布着大约20“=”符号。
我的大多数人都有一个XmlException,其行号和字符位置允许我找到有问题的字符并手动删除它们。我刚刚开始编写一个自动执行此过程的小应用程序,但我想知道是否有更好的方法来修复损坏的xml文件。
拙劣的线条示例:
<item name="InstanceGuid" typ=e_name="gh_guid" type_code="9">ee330f9f-a1e2-451a-8c6d-723f066a6bd4</item>
↑ (this is supposed to be [type_name])
答案 0 :(得分:1)
您可以搜索没有双引号的任何等号。编写正则表达式(正则表达式)非常简单。
或者您可以在高级文本编辑器中打开文件,然后通过相同的正则表达式搜索来查找和替换/删除。一些文本编辑器允许您使用正则表达式查找/替换,因此您可以搜索任何等号,而不是双引号,只需将其删除即可。
当然,我会保留原文的副本,因为如果你在内部XML中有相同的符号,那么它可能会搞乱它等等。
答案 1 :(得分:1)
使用正则表达式首先清理xml。
类似的东西:
s/([^\s"]+)=([^\s"]+="[^"]*")/\1\2/
显然,这需要移植到您选择的正则表达式引擎:)
答案 2 :(得分:1)
在TextPad中,如果使用正则表达式= [^“]进行搜索,您会发现任何=符号后面没有”
这应该找到文档中出现rogue =符号的位置。要替换它们,请先在TextPad中打开文档。然后按F8。
在对话框中输入以下内容:
找到:= \([^“] \)
替换为:\ 1
选中“正则表达式”框,选择“所有文档”,然后单击“全部替换”
这应匹配所有=后面没有“并且将=替换为跟随它的符号。
typename =“test”typ = ename =“test”
将成为
typename =“test”typename =“test”