Bu xml dosyasına sahibim ve Xpath ile bazı değerler almak istiyorum.Java'da XPath ile XML Ayrıştırma - Java'da Xpath ve NodeList ile XML dosyasından veri alın
işin yarım kaldığı ama burada bazı dosyanın son bölümünde sorun (Devletler Düğümü)
<?xml version="1.0" encoding="UTF-8"?>
<favoris>
<workflow codewf="wf1000">
<information>
<title>wf1</title>
<desc>description 1</desc>
<nberState>2</nberState>
<text>text text text text text text text</text>
</information>
<states>
<state id="1" IDemployee="2">description1</state>
<state id="2" IDemployee="3">description2</state>
</states>
</workflow>
<workflow codewf="wf2000">
<information>
<title>wf2</title>
<desc>description 2</desc>
<nberState>3</nberState>
<text>text text text text text text text</text>
</information>
<states>
<state id="1" IDemployee="3">description1</state>
<state id="2" IDemployee="2">description2</state>
<state id="3" IDemployee="4">description2</state>
</states>
</workflow>
</favoris>
Ve java kodu almak: paket myXML;
import java.io.FileReader;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
public class xmlParty {
public static void main(String[] args) throws Exception {
XPathFactory factory = XPathFactory.newInstance();
XPath xPath = factory.newXPath();
NodeList favoris = (NodeList) xPath.evaluate("/favoris/workflow[@codewf='wf1000']",
new InputSource(new FileReader("a.xml")),
XPathConstants.NODESET);
for (int i = 0; i < favoris.getLength(); i++) {
Element workflow = (Element) favoris.item(i);
String title = xPath.evaluate("information/title", workflow);
String desc_w = xPath.evaluate("information/desc", workflow);
String nberState = xPath.evaluate("information/nberState", workflow);
String text = xPath.evaluate("information/text", workflow);
System.out.println(workflow.getAttribute("codewf") +" "+title + " " + desc_w + " " + nberState + " " + text);
NodeList States = (NodeList)xPath.evaluate("states/state", workflow, XPathConstants.NODESET);
System.out.println(States.getLength());
for (int k = 0; k < States.getLength(); k++) {
String desc_state = xPath.evaluate("states/state", workflow);
System.out.println(desc_state);
}
}
}
}
ve çıkış olacaktır: ID 2 ile durumuna bakıldığında
İlk örnek
wf1000 wf1 description 1 2 text text text text text text text
2
description1
description1
İkinci örnek
wf2000 wf2 description 2 3 text text text text text text text
3
description1
description1
description1
metin description2
değildir description1
olup. Ben ayrıştırıcı ikinci çocuğa hareket etmiyor ve her zaman hala köstebek çocukta olduğunu düşünüyorum. Peki, devletin niteliğini almak için nasıl yapabilirim ve nasıl yapabilirim ????????
Eğer Devletleri nodelist üzerinde yineleme olmamalı ?! –
http://stackoverflow.com/a/21890347/3245218 –