问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如果一个 xml 缺少标签,那么该如何用 java 将缺失的标签补齐?不然dom4j无法解析

发布网友 发布时间:2022-04-30 16:00

我来回答

4个回答

热心网友 时间:2023-10-08 21:29

用栈的思想:
以以上xml为例:
xml开始检查, 检查(<?xml version="1.0" encoding="GB2312"?> 部分)。
1、标签开始时的验证操作(入栈操作):
标签入栈检查(内容以<XXX开始) 验证成功
<RESULT> (标签为<XXX>的) 标签入栈 ,
(标签为<XXX/>的)标签不入栈。
继续扫描,
如果读到内容(非<>结构), 略过内容,做2(标签结束时的验证操作)
如果读到标签的开始标志<XXX>, 回到1(标签开始时的验证操作).

2 标签结束时的验证操作(入栈操作):
做出栈检查 形式为 <XXX/> 且该标签的开始部分正好在栈中。 出栈。
继续扫描:
如果读到标签的结束标志(<XXX/>结构), 做2(标签结束时的验证操作)
如果读到标签的开始标志<XXX>, 回到1(标签开始时的验证操作).

<RESULT> 入栈

<VALUE> 读到非内容, 继续入栈
<NO> 读到非内容, 继续入栈
</NO> 读到内容, 出栈检查, 出栈,
<ADDR> 读到标签的开始标志 入栈
</ADDR> 读到内容 出栈,
</VALUE> 读到标签的结束标志 出栈,
<VALUE> 如果读到标签的开始标志 入栈
<NO> 读到标签的开始标志 入栈
读到内容 略过内容出栈 出栈检查失败,

补齐标签, 只需要在相应位置加上标签的结束标志即可。

热心网友 时间:2023-10-08 21:30

说个思路,首先你把xml读成一个字符串。
如果已知只可能缺少</No>,那么用indexOf先定位<NO>如index1,如果index!=-1, 接着定位接下来的</NO>如index2,再定位index1后面最近的<如index3, 如果index2==-1 或者 index3<index2,那么肯定缺少</NO>,将位置记录下来放到list或者数组;
然后进入下一个循环,即从index1开始 定位下一个<NO>
最后,从后往前遍历位置记录,插入</NO>
如果不仅仅是缺少</NO>,情况会复杂一些,那么你就将NO作为变量,拼接<NO>和</NO>, 这样应该能解决问题。

热心网友 时间:2023-10-08 21:30

不好做,除非你事先就确定了整个文档的结构,否则,程序也没法判断你这个</NO>放到B1234后面还是</ADDR>后面

热心网友 时间:2023-10-08 21:31

这怎以弄啊,要么你刚开始就把每一个value定一个id,然后通过找到第二个,把第二个元素全部重写一篇看行不
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...结构的施工分包给其他单位那么是不是EPC总承包就不能分包 Win11玩不了地平线4如何解决_Win11玩不了地平线4怎么办 Win11玩不了地平线4如何解决_Win11玩不了地平线4怎么解决 地平线5警告显卡内存过低怎么办 极限竞速地平线5闪退怎么解决 极限竞速地平线5闪退解决方法 怎样册除手机屏幕上(精品游戏)图标 烧结普通砖有哪些 烧结普通砖都有哪些 ...4年后的年龄与弟弟3年前的年龄和是35岁。今年哥与弟各几岁??_百度... ...等于弟弟7年后的年龄,哥哥4年后与弟弟3年前的年龄的和是35岁。哥哥... 百度太卡了怎么办 帮忙用java补齐制作计算器加减乘除等于小数点这几个运算符的代码 《别让我走(2010)》百度网盘无删减完整版在线观看,马克·罗曼尼克导演的 手机百度太卡怎么解决 《稀有出口:圣诞传说》免费在线观看完整版高清,求百度网盘资源 请问java中 &gt;&gt;&gt; 这个符号是干嘛的 例子:(b &lt;&lt; 24) &gt;&gt;&gt; 8 b先左移24位,在右移? Java编程 * * * * * * * * * *大致是这个样子 for循环不会了能编写出矩形 if怎么写啊 如何用java实现 html 标签的自动补齐 穆赫兰跳资源百度云 java运算符&gt;&gt;&gt;是什么意思 JAVA TextArea输出对齐问题 JAVA怎么对字符串进行左填充呀?可以直接用print来实现么?比如我想把“1011”填充至32位,前面补0. java中的几个移位运算符总结 java字符串左填充如何实现? java 保持3位 不够左面补充字符 怎么写? 耽美快穿文,主受,一对一。类似于重生成系统,鬼畜等虐吧,一类的。 求类似《鬼畜的,等虐吧》同类小说,越搞笑越好, 求。。。与【鬼畜等虐吧】相似的文 求一下小说的百度云下载地址 《鬼畜,等虐吧!》作者:泥蛋黄 《骗子X攻略X穿越》作者:颓 《无限情 橙光游戏里鬼畜等虐吧开头那首歌是啥 求咒怨2002年网盘在线观看资源,奥菜惠主演的 java中如何将数字转化为字符串并且不足位数补0 外乡人高清下载 外乡人下载 外乡人全集在线观看 java里面使用string.format如何实现空格右填充? 求《了不起的麦瑟尔夫人第三季(2019)》百度网盘无删减完整版在线观看,埃米·谢尔曼-帕拉迪诺导演的 有谁看懂了&lt;&lt;穆兰赫道&gt;&gt; 跟我说一下 《巴比龙1973》百度云无删减完整版在线观看,史蒂夫·麦奎因主演的 Y400有没有内存扩展插槽?? 请问一下,主板内存条插槽旁边的是什么插槽? 台式电脑内存扩展槽 华硕s406u笔记本电脑有内存扩展插槽吗?若没有如何增加内存量? 密码箱的锁扣坏了,扣不上去怎么修? 台式电脑内存条有扩展插槽吗?显卡有扩展插槽吗? 电脑为什么只能显示任务管理器? 电脑经常出现闪屏现象,刚进入桌面就开始闪,只能打开任务管理器进行操作,怎么办? 你好,电脑不显示桌面,只能调出任务管理器,其他的都不行,请问怎么 银耳炒山药的做法 急,我的电脑开机只显示任务管理器,没杀毒软件,如何自己修好?? 电脑桌面没有了,只能打开任务管理器 电脑开机后桌面显示不了图标,还黑屏,只能打得开任务管理器,怎么办?