StAX

2012-01-27 11 views
7

ile şema konumu nasıl eklenir StAX kullanıyorum ve xml dosyasına bir şema konumu eklemek istiyorum. Bunu başarmanın en iyi yolu nedir?StAX

cevap

10

Eğer XMLStreamWriter kullanıyorsanız, sadece writeNamespace() ve writeAttribute() (ya da sadece writeAttribute()) kullanabilir.

XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(System.out); 
xmlStreamWriter.writeStartDocument(); 
xmlStreamWriter.writeStartElement("YourRootElement"); 
xmlStreamWriter.writeNamespace("xsi", "http://www.w3.org/2000/10/XMLSchema-instance"); 
xmlStreamWriter.writeAttribute("http://www.w3.org/2000/10/XMLSchema-instance", "noNamespaceSchemaLocation", 
     "path_to_your.xsd"); 
xmlStreamWriter.writeEndElement(); 
xmlStreamWriter.flush(); 

Çıktı:

<?xml version="1.0" ?> 
<YourRootElement xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" xsi:noNamespaceSchemaLocation="path_to_your.xsd"></YourRootElement> 

XMLEventWriter, bir createAttribute() ing add() bunu yapmak mümkün olmalıdır.

Selamlar, Max

+0

Merhaba Max, zaten bu çözümü bekliyordu. Açıklama için teşekkürler. – Lars

+3

Bu benim için çalıştı, ancak XML'im XML tam olarak doğrulanmadı. Doğrulama sorunlarımı düzeltmek için daha yeni bir şema örneğini şu şekilde belirtmem gerekiyor: 'http: // www.w3.org/2001/XMLSchema-instance'. – Muel