我有以下字符串(您可以说xml)
<News News-type="alert" ID="498" NewsPath="GetNewsFrom[3]" NewsMark="0" />
<News News-type="alert" ID="1507" NewsPath="GetNewsFrom[3]" NewsMark="0"/>
<News News-type="alert" ID="1509" NewsPath="GetNewsFrom[3]" NewsMark="0"/>
<News News-type="alert" ID="1511" NewsPath="GetNewsFrom[3]" NewsMark="0" />
<News News-type="alert" ID="1520" NewsPath="GetNewsFrom[3]" NewsMark="0" />
<News News-type="alert" ID="2999" NewsPath="data-theft[1]" NewsMark="0" />
<News News-type="alert" ID="2535" NewsPath="GetNewsFrom[3]" NewsMark="0" />
<News News-type="alert" ID="6052" NewsPath="GetNewsFrom[3]" NewsMark="100" />
我无法在上面应用xml阅读器/解析器,他们说这不是格式正确的xml文件。能否请你帮我如何从这些字符串中获取输出
String attr[4]={"News-type","ID", "NewsPath", "NewsMark"};
String values[4];
//There values dynamically in array as well
int i;
for(i=0; i<4;i++)
{
if(i==0)
value[i]=????;
else if(i==1)
...
}
如何获取
values[]
数组中的所有属性值,以便可以进一步使用它。例外:
在Java中将其作为xml文件传递时
[致命错误]:2:2:根元素之后的文档中的标记必须格式正确。
2014年3月18日,上午11:43:21 GUI.NewsReport jMenuItem2ActionPerformed
严重:null
org.xml.sax.SAXParseException; lineNumber:2; columnNumber:2;根元素后的文档中的标记必须格式正确。
在com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)
在com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347)
在javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
在GUI.NewsReport.ReadXML(NewsReport.java:185)
在GUI.NewsReport.jMenuItem2ActionPerformed(NewsReport.java:126)
在GUI.NewsReport.access $ 100(NewsReport.java:33)
在GUI.NewsReport $ 2.actionPerformed(NewsReport.java:88)
在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
在javax.swing.AbstractButton $ Handler.actionPerformed(AbstractButton.java:2341)
在javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
在javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
在javax.swing.AbstractButton.doClick(AbstractButton.java:376)
在javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
在javax.swing.plaf.basic.BasicMenuItemUI $ Handler.mouseReleased(BasicMenuItemUI.java:877)
在java.awt.Component.processMouseEvent(Component.java:6505)
在javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
在java.awt.Component.processEvent(Component.java:6270)
在java.awt.Container.processEvent(Container.java:2229)
在java.awt.Component.dispatchEventImpl(Component.java:4861)
在java.awt.Container.dispatchEventImpl(Container.java:2287)
在java.awt.Component.dispatchEvent(Component.java:4687)
在java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
在java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
在java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
在java.awt.Container.dispatchEventImpl(Container.java:2273)
在java.awt.Window.dispatchEventImpl(Window.java:2719)
在java.awt.Component.dispatchEvent(Component.java:4687)
在java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
在java.awt.EventQueue.access $ 200(EventQueue.java:103)
在java.awt.EventQueue $ 3.run(EventQueue.java:694)
在java.awt.EventQueue $ 3.run(EventQueue.java:692)
在java.security.AccessController.doPrivileged(本机方法)
在java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:76)
在java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:87)
在java.awt.EventQueue $ 4.run(EventQueue.java:708)
在java.awt.EventQueue $ 4.run(EventQueue.java:706)
在java.security.AccessController.doPrivileged(本机方法)
在java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:76)
在java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
在java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
在java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:91)处`
我在执行..时遇到了这个异常
谢谢分配!
最佳答案
没有单个根元素,因此它不是格式正确的XML文档...尽管它可能是格式良好的XML文档片段。
如果后者为真,则用Java解析它的最简单的解决方案是实现一个修改后的阅读器,该阅读器在其周围包装一个虚拟顶级元素-例如,在内容之前使用<wrapper>
,然后在其后使用</wrapper>
。 。然后在意识到<wrapper>
不是原始文件内容的一部分的情况下实现应用程序的其余部分。
关于java - 如何从格式不正确的xml中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22454814/