从坏的XML创建JSON

uz75evzq  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(79)

我试图弄清楚如何在每次更新时将损坏的xml文件转换为JSON?xml文件被破坏,所以创建一个函数JSON是行不通的。我试图使用jc --xml,但文件当然没有正确格式化。我是新的编码,尝试构建我的第一个应用程序。到目前为止,这是一个疯狂的经历哈哈。这里有两个主要的东西。节点和站。xml文件的位置/var/log/xlxd.xml,我想在其中生成JSON文件/var/http/www/log/dashboard. json
服务器是Debian
我从这个网站上学到了很多,几个月来我的第一个应用程序的工作。一些事情要注意,我已经学会了。不要开始一个项目,而不看数据的来源第一哈哈。

?xml version="1.0" encoding="UTF-8"?>
<Version>2.5.3</Version>
<XLX207  linked peers>
</XLX207  linked peers>
<XLX207  linked nodes>
<NODE>
    <Callsign>K9TON   B</Callsign>
    <IP>144.</IP>
    <LinkedModule>A</LinkedModule>
    <Protocol>YSF</Protocol>
    <ConnectTime>Thursday Thu Dec  7 00:33:05 2023</ConnectTime>
    <LastHeardTime>Saturday Sat Dec  9 22:39:02 2023</LastHeardTime>
</NODE>
<NODE>
    <Callsign>AG7AZ   B</Callsign>
    <IP>184.</IP>
    <LinkedModule>A</LinkedModule>
    <Protocol>YSF</Protocol>
    <ConnectTime>Saturday Sat Dec  9 02:06:34 2023</ConnectTime>
    <LastHeardTime>Saturday Sat Dec  9 02:06:34 2023</LastHeardTime>
</NODE>
<NODE>
    <Callsign>K9TON   D</Callsign>
    <IP>98.</IP>
    <LinkedModule>C</LinkedModule>
    <Protocol>DCS</Protocol>
    <ConnectTime>Saturday Sat Dec  9 04:07:43 2023</ConnectTime>
    <LastHeardTime>Saturday Sat Dec  9 04:07:43 2023</LastHeardTime>
</NODE>
<NODE>
    <Callsign>K9TON   B</Callsign>
    <IP>98.</IP>
    <LinkedModule>A</LinkedModule>
    <Protocol>YSF</Protocol>
    <ConnectTime>Saturday Sat Dec  9 04:43:07 2023</ConnectTime>
    <LastHeardTime>Saturday Sat Dec  9 17:52:30 2023</LastHeardTime>
</NODE>
<NODE>
    <Callsign>NC1D    B</Callsign>
    <IP>68.</IP>
    <LinkedModule>C</LinkedModule>
    <Protocol>DCS</Protocol>
    <ConnectTime>Saturday Sat Dec  9 11:05:38 2023</ConnectTime>
    <LastHeardTime>Saturday Sat Dec  9 22:21:38 2023</LastHeardTime>
</NODE>
<NODE>
    <Callsign>AG7AZ   B</Callsign>
    <IP>184.</IP>
    <LinkedModule>C</LinkedModule>
    <Protocol>DCS</Protocol>
    <ConnectTime>Saturday Sat Dec  9 17:38:07 2023</ConnectTime>
    <LastHeardTime>Saturday Sat Dec  9 18:27:56 2023</LastHeardTime>
</NODE>
<NODE>
    <Callsign>N9MAS   B</Callsign>
    <IP>47.</IP>
    <LinkedModule>A</LinkedModule>
    <Protocol>YSF</Protocol>
    <ConnectTime>Saturday Sat Dec  9 18:40:11 2023</ConnectTime>
    <LastHeardTime>Saturday Sat Dec  9 18:42:34 2023</LastHeardTime>
</NODE>
</XLX207  linked nodes>
<XLX207  heard users>
<STATION>
    <Callsign>NC1D    </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 22:39:02 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>AG7AZ   </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 22:37:33 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>K9TON   </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 22:31:53 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>NC1D     / JOEL</Callsign>
    <Via node>NC1D    B</Via node>
    <On module>C</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 22:21:40 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KA5JKI  </Callsign>
    <Via node>KA5JKI  B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 19:55:27 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KB9MQD  </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 19:29:03 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KG4ISH  </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 19:28:29 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KK7NLO  </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 19:07:40 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KA5JKI  </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 18:47:19 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>N9MAS   </Callsign>
    <Via node>N9MAS   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 18:42:34 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>AG7AZ    / ID52</Callsign>
    <Via node>AG7AZ   B</Via node>
    <On module>C</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 18:28:05 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KQ4DZY  </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 14:02:10 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KO4ZUL  </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 13:49:44 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>WH6GVN  </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  9 00:54:04 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KG4ISH  </Callsign>
    <Via node>KG4ISH  B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Friday Fri Dec  8 23:57:25 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>K7TTM   </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Friday Fri Dec  8 21:50:40 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KK7OVZ  </Callsign>
    <Via node>KK7OVZ  B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Friday Fri Dec  8 18:44:11 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>AG7AZ   </Callsign>
    <Via node>AG7AZ   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Friday Fri Dec  8 18:44:00 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KI7ZNH  </Callsign>
    <Via node>KI7ZNH  B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Friday Fri Dec  8 17:45:03 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KO4ZUL  </Callsign>
    <Via node>KO4ZUL  B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Friday Fri Dec  8 16:50:46 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>DH1EM    / 4946</Callsign>
    <Via node>DH1EM   B</Via node>
    <On module>C</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Thursday Thu Dec  7 01:23:17 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KD0TGF  </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Wednesday Wed Dec  6 22:03:31 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>NC1D    </Callsign>
    <Via node>NC1D    B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Wednesday Wed Dec  6 11:57:57 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>NC1D     / JOEL</Callsign>
    <Via node>NC1D    D</Via node>
    <On module>C</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Wednesday Wed Dec  6 11:12:21 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KF0MCM  </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Monday Mon Dec  4 15:12:34 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>KB9MQD   / JACK</Callsign>
    <Via node>KB9MQD  Y</Via node>
    <On module>C</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Monday Mon Dec  4 02:18:01 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>K9TON    / TONY</Callsign>
    <Via node>K9TON   D</Via node>
    <On module>C</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Monday Mon Dec  4 02:05:48 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>IK2WBK  </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Sunday Sun Dec  3 04:36:40 2023</LastHeardTime>
</STATION>
<STATION>
    <Callsign>PU2NMN  </Callsign>
    <Via node>K9TON   B</Via node>
    <On module>A</On module>
    <Via peer>XLX207  </Via peer>
    <LastHeardTime>Saturday Sat Dec  2 23:41:32 2023</LastHeardTime>
</STATION>
</XLX207  heard users>

字符串
我试图研究xml,并了解生成的xml格式不正确。

uoifb46i

uoifb46i1#

单个sed命令按原样修复示例

sed -re '1 s/.*/<&\n<root>/; :a; s/([^<]*<)([/]?[[:alnum:]]+) +([[:alnum:]]+.*>)/\1\2\3/; t a; $ s/.*/&\n<\/root>/' tmp.txt

字符串

li9yvcax

li9yvcax2#

正确的解决方案是修复XML文本,然后使用标准XML解析器解析它。
所以,让我们看看是什么问题。
首先,我假设缺少的初始<字符只是一个剪切和粘贴错误。
其次,正如您在注解中指出的那样,文件没有“root”标记。在文件头后插入<root>,在整个文件体的末尾插入</root>非常简单。
接下来是不正确的属性。XML希望属性是键/值对,并且不允许在结束标记中使用属性。由于所有属性看起来都是标记的类型,并且文件中不存在正确的键/值对,最简单的做法是,只取所有这些属性(如linked peers),并在开始标记中将它们转换为type="linked peers",然后从结束标记中删除所有属性标签.
下面的代码让你的文件为我传递xmllint

import re

with open('input.xml', 'r') as fh:
    xml = fh.read()

xml = xml.replace('?>', '?><root>') + "</root>"

bad_opening_tag_re = r'<([^?][^ >]*) +([^>]+)>'
bad_opening_replacement = r'<\1 type="\2">'
bad_closing_tag_re = r'</([^ >]+) +([^>]+)>'
bad_closing_replacement = r'</\1>'

xml = re.sub(bad_opening_tag_re, bad_opening_replacement, xml)
xml = re.sub(bad_closing_tag_re, bad_closing_replacement, xml)

print(xml)

字符串

相关问题