2016-05-26 7 views
2

Ich schreibe ein Analysetool, um den Textinhalt zweier Bean-XML-Dateien in Java zu vergleichen. Der Textinhalt ändert sich und wir benötigen eine Möglichkeit, ein Skript auszuführen, um sicherzustellen, dass der Textinhalt identisch ist. Ich weiß, wir haben org.w3c.dom, die eine Methode getElementsByTagName ("tag_name") hat und die eine Liste im XML-Dokument zurückgibt. Ich frage mich, ob jemand einen Weg kennt, dies mit dem Klassennamen zu tun? Ich habe herumgesucht, konnte das aber noch nicht lösen.So analysieren Sie XML-Dokumente nach Klassennamen mit Java

<bean class="com.mycompany.myText" id="Q1.4"> 
    <property name="name"> 
     <value>Q1.4</value> 
    </property> 
    <property name="text"> 
     <value>This is text one</value> 
    </property> 
    <property name="retired"> 
      <value>true</value> 
    </property> 
</bean> 

<bean class="com.mycompany.myText" id="Q1.5"> 
    <property name="name"> 
     <value>Q1.5</value> 
    </property> 
    <property name="text"> 
     <value>This is text two</value> 
    </property> 
    <property name="retired"> 
      <value>true</value> 
    </property> 
</bean> 

Ich kann die ‚Bohne‘ Elementnamen verwenden, da es mehrere andere Bohnen whith nicht relevant stuff ich nur die, die mit der Klasse com.mycompany.myText und dem Wert brauche ich bin versucht zu extrahieren ist Eigenschaftsname = Text - der Textinhalt

Irgendwelche Hilfe würden hier geschätzt. Außerdem sollte ich erwähnen, dass wir keine direkte Kontrolle darüber haben, wie die XML-Datei verwaltet und strukturiert wird, da sie uns von einer dritten Partei gespeist wird.

Antwort

4

Wie Sie sagen, müssen Sie Tags nach ihren Attributen auswählen.

Sie könnten XPath verwenden, um dies zu erreichen. Sehen Sie diese Ressourcen:

Der Ausdruck so etwas wie dieses

/bean[@class='com.mycompany.myText']/property[@name='text']/value

Ich hoffe, würde ich zumindest ein wenig helfen könnte Bit.

+1

Vielen Dank! Ich habe eine begrenzte Arbeit mit Web-Sachen gemacht und XML hat nicht einmal daran gedacht, XPath zu benutzen - Duh! Das wird mein Problem lösen. – Nixman55

+1

Okay, froh, dass ich helfen konnte;) – TuringTux