如何从元素中提取属性值。我的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(); } }} 最佳答案 解决了:XML 输入:< nodename attribute="value" > Something </ nodename> java 代码:NodesList subs = child.item(j).getChildNodes();System.out.println(subs.item(0).getTextContent()); // >> SomethingElement element = (Element) document.adoptNode(subs.item(0));System.out.println(element.getAttribute("attribute")); // >> value关于Java DOM XML 解析:: 获取元素属性值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9952220/
10-11 22:22
查看更多