Mich wrote:
I have a small XML document and I need to locate an 'led' node according
to the unique 'skew'. I would really appreciate if someone can point me
to an online example of how to do this.
<catalog>
<led color="Blue" skew='LB1' circumference='5' nm='470' ma='20'
voltage='3.2 ~ 3.8' mcd='6000' angle='10 ~ 20'/>
<led color="Turquoise" skew='LB1' circumference='5' nm='510' ma='20'
voltage='3.2 ~ 3.8' mcd='6000+' angle='25 to 30'/>
<led color="Green" skew='LG1' circumference='5' nm='520' ma='20'
voltage='3.2 ~ 3.6' mcd='5000' angle='10 ~ 20'/>
<led color="Yellow" skew='LY1' circumference='5' nm='585 ~ 595'
ma='20' voltage='1.8 ~ 2.2' mcd='5000' angle='10 ~ 20'/>
<led color="Red" skew='LR1' circumference='5' nm='640 ~ 645' ma='20'
voltage='1.8 ~ 2.2' mcd='8000' angle='10 ~ 20'/>
<led color="Red" skew='LR2' circumference='P4' nm='624' ma='70'
voltage='1.8 ~ 2.2' mcd='4500' angle='80'/>
<led color="Red" skew='LR3' circumference='10' nm='660' ma='20'
voltage='1.8 ~ 2.2' mcd='5000' angle='20'/>
</catalog>
You can use XPath.
Here are an example illustrating the technique:
package april;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class SelextXPath {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File("C:\\catalog.xml"));
Element led =
(Element)XPathAPI.selectSingleNode(doc.getDocumentElement(),
"led[@skew='LY1']");
OutputFormat fmt = new OutputFormat();
fmt.setIndenting(true);
XMLSerializer ser = new XMLSerializer(System.out, fmt);
ser.serialize(led);
}
}
Arne