gpt4 book ai didi

java - 如何通过验证在 JAXB 中进行部分解析 xml?

转载 作者:行者123 更新时间:2023-11-30 11:25:49 27 4
gpt4 key购买 nike

我有一个很大的 XML 文件,我想根据 XSD 对其进行验证。但是从大的 xml 文件我只想要一个元素

这是我的示例 XML

<Something>
<Element1>element</Element1>
<IDontWantThis>element</IDontWantThis>
<Something>

这是我的 POJO,所以我没有包含 IDontWantThis

@XmlRootElement(name = "Something")
@XmlAccessorType(XmlAccessType.FIELD)
public class Something {

@XmlElement(name = "Element1")
private String element1;

}

这就是我解析 XML 的方式

        StreamSource source = new StreamSource(filePath);

SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File(XSD));

Unmarshaller u = JAXBContext.newInstance(Something.class).createUnmarshaller();
u.setSchema(schema);
u.setEventHandler(new MyValidationEventHandler());
Products products = u.unmarshal(source, Something.class).getValue();

但是当我运行我的应用程序时出现了这个错误

unexpected element (uri:"urn:blah", local:"IDontWantThis"). Expected elements are <{urn:blah}Element1>,<{urn:blah}Element1>

我如何只解析部分元素,因为我的 xml 很大并且包含很多我并不真正需要使用的元素。

最佳答案

MyValidationEventHandler 是您为自定义手部错误编写的类。如果您想忽略错误,只需将逻辑放在那里即可。

关于java - 如何通过验证在 JAXB 中进行部分解析 xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20121625/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com