gpt4 book ai didi

java - 使用Java删除XML中的空标签

转载 作者:行者123 更新时间:2023-12-03 18:33:05 25 4
gpt4 key购买 nike

我为Servlet提供了一些功能,我想做的一件事情是,当接收InputStream(基本上是解析为XML格式的PDF文档)时,将该数据设置为String对象,然后尝试删除所有空标签,但到目前为止我还没有得到任何好的结果:

这是servlet接收的数据



    <form1>
<GenInfo>
<Section1>
<EmployeeDet>
<Title>999990000</Title>
<Firstname>MIKE</Firstname>
<Surname>SPENCER</Surname>
<CoName/>
<EmpAdd>
<Address><Add1/><Add2/><Town/><County/><Pcode/></Address>
</EmpAdd>
<PosHeld>DEVELOPER</PosHeld>
<Email/>
<ConNo/>
<Nationality/>
<PPSNo/>
<EmpNo/>
</EmployeeDet>
</Section1>
</GenInfo>
</form1>


最终结果应如下所示:



    <form1>
<GenInfo>
<Section1>
<EmployeeDet>
<Title>999990000</Title>
<Firstname>MIKE</Firstname>
<Surname>SPENCER</Surname>
<PosHeld>DEVELOPER</PosHeld>
</EmployeeDet>
</Section1>
</GenInfo>
</form1>


我很抱歉,如果这是一个重复的问题,但是我对类似的帖子进行了一些研究,但没有一个可以为我提供正确的方法,这就是为什么我在另一篇帖子中问您。

先感谢您。

最佳答案

这是regex做您想要的事情的方法。我敢肯定我可能没有想到某些“边缘”情况,但有时您无法确定何时使用regex。另外,DOM解析器可能是执行此操作的最佳方法。

public static void main(String[] args) throws Exception {
String[] patterns = new String[] {
// This will remove empty elements that look like <ElementName/>
"\\s*<\\w+/>",
// This will remove empty elements that look like <ElementName></ElementName>
"\\s*<\\w+></\\w+>",
// This will remove empty elements that look like
// <ElementName>
// </ElementName>
"\\s*<\\w+>\n*\\s*</\\w+>"
};

String xml = " <form1>\n" +
" <GenInfo>\n" +
" <Section1>\n" +
" <EmployeeDet>\n" +
" <Title>999990000</Title>\n" +
" <Firstname>MIKE</Firstname>\n" +
" <Surname>SPENCER</Surname>\n" +
" <CoName/>\n" +
" <EmpAdd>\n" +
" <Address><Add1/><Add2/><Town/><County/><Pcode/></Address>\n" +
" </EmpAdd>\n" +
" <PosHeld>DEVELOPER</PosHeld>\n" +
" <Email/>\n" +
" <ConNo/>\n" +
" <Nationality/>\n" +
" <PPSNo/>\n" +
" <EmpNo/>\n" +
" </EmployeeDet>\n" +
" </Section1>\n" +
" </GenInfo>\n" +
" </form1>";

for (String pattern : patterns) {
Matcher matcher = Pattern.compile(pattern).matcher(xml);
xml = matcher.replaceAll("");
}

System.out.println(xml);
}


结果:

    <form1>
<GenInfo>
<Section1>
<EmployeeDet>
<Title>999990000</Title>
<Firstname>MIKE</Firstname>
<Surname>SPENCER</Surname>
<PosHeld>DEVELOPER</PosHeld>
</EmployeeDet>
</Section1>
</GenInfo>
</form1>

关于java - 使用Java删除XML中的空标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30577448/

25 4 0