0

我是自动化使用 Selenium 和 Java 的新手。

我有一个问题,我需要通过一个 XML 文件找到一个节点并读取该节点中的值。我需要将值与输入字符串进行比较。

有人可以帮我如何读取 xml 文件并从 xml 中获取值并将其存储在变量中。

这就是我在 xml 中的内容:

在此处输入图像描述

在图像 01 中,我需要读取值ChassisModuleOptionRequest partner_item=并将值存储在数组中。

下面是我试过的代码。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();                   

//Parsing of xml is done here
Document doc = builder.parse(new File("C:\\Users\\Satish_D1\\Documents\\My Received Files\\PDSL_ABM.xml"));

//Here we get the root element of XML and print out
doc.getDocumentElement().normalize();
System.out.println ("Root element of the doc is " + doc.getDocumentElement().getNodeName());

NodeList list = doc.getElementsByTagName("ChassisModuleOptionRequest");
int totalPartnerItem =list.getLength();
System.out.println("Total no of Partner Item : " + totalPartnerItem);         

//Traversing all the elements from the list and printing out its data
for (int i = 0; i < list.getLength(); i++) 
{

    //Getting one node from the list.
    Node childNode = list.item(i);
    System.out.println("Partner Item : " + childNode.getTextContent());
 }
4

1 回答 1

0

我们可以使用 Java 内置库来创建正则表达式模式并在字符串(文件中的数据)中搜索它。下面的代码可能会给你一些想法。

public static void main(String[] args) throws FileNotFoundException 
{
  //Change the path for the file
  String content = new Scanner(new File("/home/santhoshkumar/Desktop/sample.xml")).useDelimiter("\\Z").next();

  //System.out.println(content);
  //Arraylist to store the values
  ArrayList<String> values = new ArrayList<>();
  //Change the pattern.
  Pattern pattern = Pattern.compile("<CChassisModuleOptionRequest partner_item=\"(.*)\">");    
  Matcher matcher = pattern.matcher(content);  

  while (matcher.find()) 
  {    
    System.out.println(matcher.group(1));    
    values.add(matcher.group(1));
  }    
}

希望这可以帮助。谢谢。

于 2017-08-18T05:48:35.597 回答