gpt4 book ai didi

标题的 Java XML 打印节点

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

首先我会说我不太擅长 Java 或 XML。

下面是我需要的打印出子节点的代码。代码不是我写的,我是在帮助网站上找到的:Java XML Example .现在,我需要它做的是消除所有特异性痕迹。这意味着我不希望它搜索“TITLE”或“CD”,我希望它找出第一个节点是什么并打印它。这意味着如果第一个是 CD,那么它应该为所有节点打印 CD,依此类推。我计划将它用于多个 XML 文件,但它们都不相同。这就是为什么不特定于一个 XML 而使用引号很重要的原因。

为了让您了解我想要作为最后输出的内容,基本上是一个 CSV 文件。顶部的标题,用逗号分隔,下面的内容,用逗号分隔。为此,我还需要一个打印方法,该方法在标题的顶部列出所有节点。我不确定该怎么做。

编辑:我的问题是,如何在不进行硬编码的情况下打印标签名称(例如标题)。我希望它也能处理与 CD 或音乐无关的 XML 文件。

//This should be the final result:
Title, Artist, Album,
On Fire, Eminem, Recovery,
Not Afraid, Eminem, Recovery,

//I want this code without hardcoding headers like Title inside it.
Element fstElmnt = (Element) fstNode;
NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("TITLE");
Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
NodeList fstNm = fstNmElmnt.getChildNodes();
System.out.print(((Node) fstNm.item(0)).getNodeValue()+", ");

最佳答案

完全与元素名称无关的代码:

boolean titlePrinted = false;
Element root = doc.getDocumentElement();
NodeList cdNodes = root.getChildNodes();
for (int i = 0; i < cdNodes.getLength(); i++) {
Node cdNode = cdNodes.item(i);
if (cdNode.getNodeType() == Node.ELEMENT_NODE) {
NodeList cdAttrNodes = cdNode.getChildNodes();
if (!titlePrinted) {
for (int j = 0; j < cdAttrNodes.getLength(); j++) {
Node cdAttrNode = cdAttrNodes.item(j);
// add this if statement
if (cdAttrNode.getNodeType() == Node.ELEMENT_NODE) {
System.out.print(cdAttrNode.getNodeName() + ",");
}
}
System.out.println("");
titlePrinted = true;
}
for (int j = 0; j < cdAttrNodes.getLength(); j++) {
Node cdAttrNode = cdAttrNodes.item(j);
if (cdAttrNode.getNodeType() == Node.ELEMENT_NODE) {
NodeList attrNodes = cdAttrNode.getChildNodes();
for (int k = 0; k < attrNodes.getLength(); k++) {
Node attrNode = attrNodes.item(k);
if (attrNode.getNodeType() == Node.TEXT_NODE) {
System.out.print(attrNode.getNodeValue() + ",");
}
}
}
}
System.out.println("");
}
}

在您建议的 .xml 上进行了测试。我的解决方案使用节点而不是独立的元素。

关于标题的 Java XML 打印节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14788418/

25 4 0
文章推荐: jquery - 来自 Chrome 扩展的 jQuery AJAX 调用问题
文章推荐: go - 使用指针和值接收器构造类型实例
文章推荐: arrays - pq: 函数 unnest(unknown) 不是唯一的
文章推荐: C# XML 序列化 - 如何序列化继承 List 的类中的属性?