【发布时间】:2021-03-18 14:40:23
【问题描述】:
在我的项目中,我有几个具有不同结构的存储库 xml 文件。例如:
common.xml
<general>
<youTube>https://www.youtube.com/</youTube>
<eBay>https://www.ebay.com/</eBay>
<trollPic>https://mallofnorway.com/content/uploads/2020/07/008840118.jpg</trollPic>
<ui>
<multiValueAtt>Gender</multiValueAtt>
</ui>
<api>
<ownerId>1e1b3a81-8f9a-4126-890a-109694e9fd7c</ownerId>
<schemaId>4cbacf2e-8f3f-4c0b-9764-d88d302d279f</schemaId>
</api>
</general>
partner.xml
<general>
<ui>
<partner>
<schema>
<multiValueAttr>Gender</multiValueAttr>
</schema>
</partner>
<member>
<schema>
<multiValueAttr>Department</multiValueAttr>
</schema>
</member>
</ui>
</general>
我需要创建一个函数来从所有这些文件中获取值。所以我知道我需要将我在该文件中查找的 xml 文件位置和指定的标记名称以及可能该标记/字符串的 xml 路径传递给我的函数。所以我猜方法调用应该看起来像getConfigParam('./some-file.xml', 'ui.partner.schema.multiValueAttr');
我知道如何阅读简单的xml 文件:
static public String objRepository(String fileName, String area, String key){
try{
String rootPath = Paths.get(".").toAbsolutePath().normalize().toString();
String path = rootPath + "\\src\\main\\resources\\repository\\" + fileName + ".xml";
File file=new File(path);
DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse(file);
doc.getDocumentElement().normalize();
//System.out.println("The node name is: "+doc.getDocumentElement().getNodeName());
NodeList nList=doc.getElementsByTagName(area);
//System.out.println("The length is: "+nList.getLength());
for(int i=0; i<nList.getLength(); i++){
Node nNode=nList.item(i);
if(nNode.getNodeType()==Node.ELEMENT_NODE){
Element ele=(Element) nNode;
return ele.getElementsByTagName(key).item(i).getTextContent();
}
}
}catch(Exception e){
e.printStackTrace();
}
return "";
}
我也知道how to read嵌套xml结构不变的文件,但我不知道如何用相同的方法读取不同结构的嵌套xml文件。
【问题讨论】:
-
你看过 XPath 了吗?
-
什么意思?