簡體   English   中英

JAVA / JAXB在解組時應用多個名稱空間

[英]JAVA/JAXB Applying multiple namespaces when unmarshalling

我有一個xml,我正試圖解組。 它失敗,因為它缺少require命名空間。

<?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來源的鏈接:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM