我正在尝试编写一个通用的 xml 解析器来解析所有 xml 标记并将数据及其值作为键值对获取到映射中。示例 xml:
<?xml version="1.0"?>
<company>
<staff>
<firstname>Kevin</firstname>
<lastname>Gay</lastname>
<salary>50000</salary>
</staff>
</company>
输出如下: NodeName:[company] Value:[
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。