解析带有多个标签的XML文档时出错

时间:2019-02-06 08:52:18

标签: java xml spring-boot sax

我的XML看起来像这样:

<uc-export clientvers="8.00"> <JOBP AllowExternal="1" client="5000" name="DEV_1234" system="DEV">
 </JOBP></uc-export>
<uc-export clientvers="8.00"> <JOBP AllowExternal="1" client="5000" name="DEV_435" system="DEV">
 </JOBP></uc-export>
<uc-export clientvers="10.0.8+build.472"> <JOBS_UNIX AttrType="UNIX" client="5000" name="TEST_JOB123" system="DEV"><node content="1" id="VALUE" name="Variables" parent="" type="VALUE">

无论是JOBS_UNIX还是JOBP对象,我都需要从xml中提取标签

我正在使用DocumentBuilderFatory

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
File file = new File(path);
Document document = db.parse(file);
document.getDocumentElement().normalize();
list = document.getElementsByTagName("*");
Element element = (Element) list.item(1);
jobProps = element.getAttributeNode("name").getValue();

我可以解析文档,因为它只有1个元素,但是不能同时使用多个标签

1 个答案:

答案 0 :(得分:0)

您的文件是格式良好的外部常规解析实体(通常简称为XML片段),但它不是格式良好的文档实体,因此您不能以通常的方式对其进行解析。解析它的最简单方法是在<dummy>前面加上</dummy>-但是,只有在您确信文件中不会有XML声明或BOM时,该方法才有效。一种更安全(也许更有效)的方法是使用实​​体引用构造一个引用该文档的XML文档,然后解析该引用文档。看起来像这样:

<!DOCTYPE dummy [
<!ENTITY e SYSTEM "fragment.xml">
]>
<dummy>&e;</dummy>