Java XML解析错误“;“格式良好”;

Java XML解析错误“;“格式良好”;,java,xml,parsing,Java,Xml,Parsing,我在数据库中有XML数据(不是文件) 我需要对其进行解析,以便编写测试来验证xml中的数据 xml(内容数据): 250000000032 100104653 标准 平方米 0001-01-01T00:00:00.000 0001-01-01T00:00:00.000 2016-02-26T15:27:13 9999-12-31T23:59:59.000 活跃的 U2 手册 250000000032 纸 2016-02-26T15:27:13 9999-12-31T23:59:59.000 A

我在数据库中有XML数据(不是文件) 我需要对其进行解析,以便编写测试来验证xml中的数据

xml(内容数据):


250000000032
100104653
标准
平方米
0001-01-01T00:00:00.000
0001-01-01T00:00:00.000
2016-02-26T15:27:13
9999-12-31T23:59:59.000
活跃的
U2
手册
250000000032
纸
2016-02-26T15:27:13
9999-12-31T23:59:59.000
ApuiafgjkLrjgdna Fouydf
判定元件
118298
福伊德夫
ApuiafgjkLrjgdna
Cxvb
欧元
2.
N
我如何解析它:

p

package simbaOnlineReplacement;
导入java.io.StringReader;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
导入org.w3c.dom.NodeList;
导入org.xml.sax.InputSource;
导入ta.maxcare.help.DBSor;
公共类XMLTest2{
公共静态void main(字符串[]args){
试一试{
String data=new DBSor().getContentData(“106897066”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
InputSource is=新的InputSource(新的StringReader(数据));
Document doc=dBuilder.parse(is);
doc.getDocumentElement().normalize();
System.out.println(“根元素:+doc.getDocumentElement().getNodeName());
NodeList nList=doc.getElementsByTagName(“MediaData”);
System.out.println(“-------------------------------”;
对于(int-temp=0;temp
和e给定错误:

[致命错误]:14:2:文档中根后面的标记 元素必须是格式良好的。org.xml.sax.SAXParseException; 行号:14;列数:2;文档中的标记如下所示 根元素必须格式良好。在 com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(未知 来源)在 com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(未知 源代码)位于simbaonlineplacement.XMLTest2.main(XMLTest2.java:23)


在格式良好的XML中,必须有一个根元素
brid:AccountData
brid:PaymentData
brid:MediaData
处于同一级别,这是错误的。例如,您应该有一个包含所有元素的根元素。

在格式良好的XML中,必须有一个根元素
brid:AccountData
brid:PaymentData
brid:MediaData
处于同一级别,这是错误的。例如,您应该有一个根元素将它们全部封装起来。

您的XML是一个格式良好的外部通用解析实体,但它不是一个格式良好的文档。因此,最简单的处理方法是创建一个简单的包装文件,将其作为外部实体引用:

<!DOCTYPE wrapper [
<!ENTITY e SYSTEM "data.xml">
]>
<wrapper>&e;</wrapper>

&e;

然后解析包装文件。

您的XML是格式良好的外部通用解析实体,但它不是格式良好的文档。因此,最简单的处理方法是创建一个简单的包装文件,将其作为外部实体引用:

<!DOCTYPE wrapper [
<!ENTITY e SYSTEM "data.xml">
]>
<wrapper>&e;</wrapper>

&e;

然后解析包装文件。

上述示例xml文档是否完整?它没有根节点?这是完整的工作xml数据,正如我前面所说的,它不是文件,而是数据库中的数据。上面的示例xml文档是否完整?它没有根节点?这是完整的工作xml数据,正如我前面所说的,它不是文件,而是数据库中的数据如果输入数据实际上没有一个根元素,您可能只需将其包装在
中即可修复它.XML不可编辑,它将发送到其他系统。这没有错。我只需要核实一下姓名和姓氏name@user3898998:我明白了,但解析方法需要格式良好的文档。我认为您应该从DB中阅读该文档,将其保存在本地,使其成为格式良好的文档,然后在本地文档上进行操作。也许遵循Thilo的建议会对你有所帮助。如果你知道会发生什么,并且格式不好,那么就将其解析为文本。或者,使用HTML解析器。它将尽可能解析未格式化的xml。尝试JSoup。如果输入数据实际上没有一个根元素,您可以通过将其全部包装在
中来修复它.XML不可编辑,它将发送到其他系统。这没有错。我只需要核实一下姓名和姓氏name@user3898998:我明白了,但解析方法需要格式良好的文档。我认为您应该从DB中阅读该文档,将其保存在本地,使其成为格式良好的文档,然后在本地文档上进行操作。也许遵循Thilo的建议会对你有所帮助。如果你知道会发生什么,并且格式不好,那么就将其解析为文本。或者,使用HTML解析器。它将尽可能解析未格式化的xml。试试JSoup。
<!DOCTYPE wrapper [
<!ENTITY e SYSTEM "data.xml">
]>
<wrapper>&e;</wrapper>