gpt4 book ai didi

java - Xml 解析获取标签之间的数据以及父信息

转载 作者:行者123 更新时间:2023-12-01 14:23:10 25 4
gpt4 key购买 nike

我正在尝试编写一个通用的 xml 解析器,它解析所有 xml 标签并将数据及其值作为键值对放入映射中。示例 XML:

<?xml version="1.0"?>
<company>
<staff>
<firstname>Kevin</firstname>
<lastname>Gay</lastname>
<salary>50000</salary>
</staff>
</company>

输出结果如下: 节点名称:[公司] 值:[

        Kevin
Gay
50000

]
NodeName:[staff] Value:[
Kevin
Gay
50000
]
NodeName:[firstname] Value:[Kevin]
NodeName:[lastname] Value:[Gay]
NodeName:[salary] Value:[50000]

我的代码如下:

    final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
final DocumentBuilder db = dbf.newDocumentBuilder();
final ByteArrayInputStream bis = new ByteArrayInputStream(xmlString.getBytes());
//where xmlString is a file read using DataInputStream.
final Document doc1 = db.parse(bis);
printElements(doc1);

void printElements(final Document doc)
{
final NodeList nl = doc.getElementsByTagName("*");
Node node;

for (int i = 0; i < nl.getLength(); i++)
{
node = nl.item(i);
System.out.println("NodeName:[" + node.getNodeName() + "] Value:[" + node.getTextContent() + "]");
}
}

我应该如何从打印中删除员工和公司属性。我不想按标签名称使用 JAXB 或 getTags,因为 xml 标签数据每次都会更改,而且我正在编写通用 xml 解析器,其工作是解析标签及其值并将其放入映射中。

Alo,我怎样才能找到我正在解析的标签的父级,以便我可以跟踪子级的来源,在这种情况下..company0->staff->firstname。

最佳答案

可以通过以下更改来做到这一点:

    for (int i=0; i<nodeList.getLength(); i++) 
{
// Get element
Element element = (Element)nodeList.item(i);
final NodeList nodes = element.getChildNodes();
if(nodes.getLength() == 1)
{
System.out.println(element.getNodeName() + " " + element.getTextContent());
}
}

关于java - Xml 解析获取标签之间的数据以及父信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17372174/

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