与多个标签错误解析XML文档

问题描述 投票:0回答:1

我的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">

我需要从XML中提取的标签,无论是JOBS_UNIX或JOBP对象

我使用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元是文件,但它不工作的多个标签

java xml spring-boot sax
1个回答
0
投票

你的文件是一个结构良好的外部通用解析实体(通常称为简称为XML片段),但它不是一个良好的文档实体,所以你不能用通常的方法解析它。解析它最简单的方法是冠以<dummy>和追加</dummy> - 但是,只有当你自信有不会是对文件的XML声明或BOM工作。更安全的(也许更有效)的方法是构建是指这一个使用实体引用的XML文档,然后解析该参考文件。这将是这个样子:

<!DOCTYPE dummy [
<!ENTITY e SYSTEM "fragment.xml">
]>
<dummy>&e;</dummy>
© www.soinside.com 2019 - 2024. All rights reserved.