# Parsen einer XML ohne Validierung



## rtt (21. Aug 2007)

Hallo,
ich habe ein Standalone Tool, welches eine bestimmte XML-Datei einliest. Dazu verwende ich SAXbuilder, was auch gut funktioniert, solage das Tool ins Internet kann. Wird das Tool auf einem Rechner verwendet, welches kein Internet hat, bekomme ich die folgende Exception: 

java.net.ConnectException: Connection timed out: connect

Das Problem ist anscheinend folgendes. Der SAX Parser versucht die XML-Datei zu validieren, was ihm aber bei fehlender Verbindung zum Internet nicht gelingt. Daher dann die Exception. 

Das setzen eines flag's, damit keine Validierung durchgeführt wird, brachte keinen Erfolg und erzeugte die Fehlermeldung:
java.net.UnknownHostException: www.springframework.org

Gibt es eine Möglichkleit die XML einzulesen, ohne das das Tool ins Netz muß und ohne dass ich eine DTD benötige?
Ziel ist es einfach einen bestimmten Wert auszulesen, eventuell abzuändern und wieder in der Datei zu speichern.

Für Hilfe und Tips bin ich dankbar.
Gruß Robin



Einlesen der Datei:

```
SAXBuilder builder = new SAXBuilder();
builder.setValidation(false);
Document document = builder.build(xmlFile);
				
Element rootElement = document.getRootElement();
```


Auszug aus der XML-Datei:

```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>    
    
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        
        <property name="dataSource"><ref bean="dataSource"/></property>
        
        <property name="mappingResources">
            <list>
                <value>com/rtt/portal/replication/entities/Changelog.hbm.xml</value>
            </list>
        </property>
        
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>                
            </props>
        </property>
    </bean>

</beans>
```


----------



## pat2004 (22. Aug 2007)

hi

mit castor brauchst du keine i-net verbindung muss mal googlen castor von exolab


----------



## rtt (23. Aug 2007)

habs mit dem EntityResolver gelöst. Hier mal mein Code, falls jemand ein ähnliches Problem hat.

Klasse einbinden:

```
public class NoOpEntityResolver implements EntityResolver {

		@SuppressWarnings("deprecation")
		public InputSource resolveEntity(String publicId, String systemId) {
		    return new InputSource(new StringBufferInputStream(""));
		  }
	}
```


und beim laden der xml den EntityResolver angeben:

```
SAXBuilder builder = new SAXBuilder();
builder.setEntityResolver(new NoOpEntityResolver());
Document document = builder.build(xmlFile);
```


Gruß Robin


----------

