gpt4 book ai didi

java - 使用java过滤xml

转载 作者:行者123 更新时间:2023-12-02 11:10:48 24 4
gpt4 key购买 nike

我有一个包含数据的 xml 文件。我需要创建一个具有某些条件的 xml 报告

例如:源 xml 文件包含如下所示的数据

<testcase time="71.588" name="LifeActuarialRisk">
<properties>
<property name="Upload_" value="P"/>
<property name="Upload_" value="P"/>
<property name="Upload_" value="F"/>
<property name="Upload_" value="P"/>
<property name="Upload_" value="P"/>
</properties>
</testcase>

我想按如下方式过滤 xml

<testcase time="71.588" name="LifeActuarialRisk">
<properties>
<property name="Upload_" value="F"/>
</properties>
</testcase>

谁能解释一下解决方案

最佳答案

使用JAX-B编码和取消编码数据,

TestCase 域类:

@XmlRootElement
public class TestCase{

private List<Property> logProperties = new ArrayList<Property>();

@XmlElementWrapper(name="properties")
@XmlElement(name="property")
public List<Property> getLogProperties() {
return logProperties;
}
}

另外,为您的 Property 类编写一个。

取消编码、转换并将其编码到文件:

File file = new File("C:\\yourData.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(TestCase.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
TestCase aTestCase = (TestCase) jaxbUnmarshaller.unmarshal(file);

aTestCase.setProperties(aTestCase.getProperties().stream()
.filter(p -> "F".equals(p.getValue())).collect(Collectors.toList()));

Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(aTestCase , file);

关于java - 使用java过滤xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50637984/

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