gpt4 book ai didi

Java DOM XML 解析::获取元素属性值

转载 作者:数据小太阳 更新时间:2023-10-29 02:24:32 26 4
gpt4 key购买 nike

如何从元素中提取属性值。我的xml节点是这样写的< nodename attribute="value"> 我需要将其提取出来以将其与另一个字符串进行比较。

但是因为我没有调用 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()); // >> Something

Element element = (Element) document.adoptNode(subs.item(0));
System.out.println(element.getAttribute("attribute")); // >> value

关于Java DOM XML 解析::获取元素属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9952220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com