okay, jeg læser ikke min fil fra disken, men benytter et document til at transportere mine data, så jeg står bare med et org.w3c.dom.Document. Vil det ændre på noget?
Se artiklen "Mere XML med Java", gå ned i bunden og find ScanWithWalker eksemplet og genbrug den logik, men bar elad while løkken tælle op i.s.f. at udskrive.
Fandt faktisk også et par andre måder at klare opgaven på
public static int getNumberOfElements(Document doc, String xpath) { // Set up a DOM tree to query. DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance(); dfactory.setNamespaceAware(true);
// Create an XPath evaluator and pass in the document. XPathEvaluator evaluator = new XPathEvaluatorImpl(doc); XPathNSResolver resolver = evaluator.createNSResolver(doc);
// Evaluate the xpath expression XPathResult result = (XPathResult)evaluator.evaluate(xpath, doc, resolver, XPathResult.NUMBER_TYPE, null); return (int)(result.getNumberValue()); }
public static int getSize(Document doc, String tagName){ //given an XML document and a tag name //return the number of occurances NodeList rows = doc.getElementsByTagName(tagName); return rows.getLength(); }
Den ser godt nok ikke ud til at virke her. som jeg forstår den så henter den en værdi fra et element f.eks getNumberOfElements(doc,"/all/one) hvor doc er <all> <one>1</one> <one>2</one> <one>3</one> </all>
vil retunere 1.0
altså værdien fra det første element som har den path for at få alle værdier skal der itereres over dem.
Men jeg har ikke rodet med det før så jeg kan tage fejl.
Men måske lidt af et overkill til bare at tælle antal elementer.
Men det kan laves på mange måder.
Man kunne også nemt selv løbe træet igennem. Eventuelt rekursivt.
Walkeren er bare nem derved at det er minimalt kode man skal skrive.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.