如何從元素中提取屬性值。我的xml節點是這樣寫的 < nodename attribute =「value」>我需要解壓出來與另一個字符串進行比較。Java DOM XML解析::獲取元素屬性值
但是因爲我沒有調用document.getElementsByTag,所以我不能使用.getAttribute(「att。」)。getNodeValue來獲取值。
相反,我有一個NodeList和getAttribute()沒有getNodeValue。
package dev;
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.*;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
public class Parser {
static String def = "\"admin\",\"base\",\"Default\",\"simple\"";
static String category = "";
static String sku = "";
static String has_options = "0";
static String name = "";
static String image = "";
static String small_image = "";
static String thumbnail = "";
public static void toCSV() {
try {
BufferedWriter output = new BufferedWriter(new FileWriter("sim.csv", true));
output.newLine();
output.write(def);
output.write(String.format(",\"%s\",\"%s\",\"%s\"", category, sku, has_options));
output.write(String.format(",\"%s\",\"%s\",\"%s\",\"%s\"", name, image, small_image, thumbnail));
output.flush();
output.close();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
toCSV();
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("input.asp.xml"));
document.getDocumentElement().normalize();
NodeList list = document.getElementsByTagName("izdelek");
for(int i = 0; i < 1; i++) {
NodeList child = list.item(i).getChildNodes();
for(int j = 0; j < child.getLength(); j++) {
if(child.item(j).getNodeName().equals("kategorija")) {
category = child.item(j).getTextContent().trim();
} else if(child.item(j).getNodeName().equals("ean")) {
sku = child.item(j).getTextContent().trim();
} else if(child.item(j).getNodeName().equals("izdelekIme")) {
name = child.item(j).getTextContent().trim();
} else if(child.item(j).getNodeName().equals("slikaMala")) {
small_image = child.item(j).getTextContent().trim();
thumbnail = child.item(j).getTextContent().trim();
} else if(child.item(j).getNodeName().equals("slikaVelika")) {
image = child.item(j).getTextContent().trim();
} else if(child.item(j).getNodeName().equals("dodatneLastnosti")) {
NodeList subs = child.item(j).getChildNodes();
//^need to parse these nodes they are written as <nodename attribute="value">
// i need to print out the value
}
}
//toCSV();
}
} catch(Exception io) {
io.printStackTrace();
}
}
}
我建議你看看XPath。 – kdgregory 2012-03-31 13:05:29