gpt4 book ai didi

JAVA/JAXB 解码时应用多个命名空间

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:08 25 4
gpt4 key购买 nike

我有一个 xml,我正在尝试解码。它失败是因为它缺少必需的命名空间。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tracks>
<tracklet><sightings/></tracklet>
<tracks>

需要成为:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:tracks xmlns:ns3="http://www.mytrack.com/TRACK" xmlns:xmime="http://www.w3.org/2005/05/xmlmime">
<tracklet><sightings/></tracklet>
</ns3:tracks>

此 NamespaceFilter 示例仅处理一个命名空间。我需要一个能够附加两个命名空间的容器。

public class NamespaceFilter extends XMLFilterImpl {

private static final String NAMESPACE = "http://www.example.com/customer";

@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(NAMESPACE, localName, qName);
}

@Override
public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
super.startElement(NAMESPACE, localName, qName, atts);
}
}

最佳答案

问题中的 NamespaceFilter 不会“添加”命名空间声明,它会调整元素限定名称的命名空间部分。

对于您的 XML,您只需调整 NamespaceFilter,以便它仅在 qname 参数为 tracks 时返回命名空间。

@Override
public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
if("tracks".equals(qname) {
super.startElement(NAMESPACE, localName, qName, atts);
} else {
super.startElement(uri, localName, qName, atts);
}
}

这是我的博客文章的链接,其中 NamespaceFilter 来自:

关于JAVA/JAXB 解码时应用多个命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28199239/

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