Above one is the XML file. I need to get the value for the Google analytics from the above xml file
我需要从上面的xml获取输出。我尝试了以下代码,但它没有显示任何输出 你能帮帮我吗
上面是XML文件。我需要从上面的xml文件中获取Google分析的价值
public class Xml {
public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException, XPathExpressionException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(new FileInputStream(new File("C:\\Users\\VAMSIKRISHNA\\Desktop\\Apache Poi\\appConfig.plist")));
NodeList nodeList=document.getElementsByTagName("key");
NodeList nodeList1=document.getElementsByTagName("string");
for (int i=0; i < nodeList.getLength(); i++) {
for(int j=0;j<nodeList1.getLength();j++) {
Node node = nodeList.item(i);
Node node1=nodeList1.item(j);
if (node.getNodeName()=="GA") {
System.out.println("Nodename"+node1.getNodeName()+" : "+node1.getFirstChild().getTextContent().trim());
}
}
}
}
}
答案 0 :(得分:0)
您需要更改行
if (node.getNodeName()=="GA") {
到
if (node.getTextContent().equals("GA")) {
有两个问题:
比较名称时,如果要比较内容
将String与==进行比较,何时应将字符串与.equals()进行比较
你也可以简化一些thinsg(只有一个for循环)
public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException, XPathExpressionException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(new FileInputStream(new File("C:\\Users\\VAMSIKRISHNA\\Desktop\\Apache Poi\\appConfig.plist")));
NodeList nodeList=document.getElementsByTagName("key");
NodeList nodeList1=document.getElementsByTagName("string");
for (int i=0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
Node node1 = nodeList1.item(i);
if (node.getTextContent().startsWith("GA")) {
String textOfChild = "";
if(node1.getFirstChild() != null && node1.getFirstChild().getTextContent() != null) {
textOfChild = node1.getFirstChild().getTextContent().trim();
}
System.out.println("Nodename"+node1.getNodeName()+" : "+ textOfChild);
}
}
}
警告:这确实假设你有相同数量的键和字符串元素。
答案 1 :(得分:0)
您的示例XML与您的解释不符,并且它不是有效的xml。
<type>prod</type>
<dict></dict>
<key>GA</key>
<string>UA-111111-24</string>
您应该浏览列表中的所有配置元素,然后打印子元素的名称和文本内容。
答案 2 :(得分:0)
尝试node.getTextContent()。equals(&#34; GA&#34;)
答案 3 :(得分:0)
编辑:你首先应该寻找包装“dict”,然后搜索孩子们。
NodeList dictList = document.getElementsByTagName("dict");
for (int j = 0; j < dictList.getLength(); j++) {
if (dictList.item(j) instanceof Element) {
Element dict = (Element) dictList.item(j);
NodeList nodeList = dict.getElementsByTagName("key");
NodeList nodeList1 = dict.getElementsByTagName("string");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getTextContent().equals("GAAnalyticsKey")) {
Node node1 = nodeList1.item(i);
System.out.println("Nodename" + node.getNodeName() + " : "
+ node.getTextContent().trim() + " " + node1.getNodeName() + " : "
+ node1.getTextContent().trim());
}
}
}
}