如何从XML文档提取值并使用Selenium将其存储在变量中Java
问题描述:
自动化新增功能,并且使用Selenium和Java。如何从XML文档提取值并使用Selenium将其存储在变量中Java
我有一个问题,我需要通过一个XML文件找到一个节点并读取该节点中的值。我需要将该值与输入字符串进行比较。
有人可以帮助我如何读取xml文件并从xml中获取值并将其存储在变量中。
<?xml version="1.0"?>
-<cXML timestamp="2017-06-15T18:26:00.271+05:30" payloadID="7500610099-0-PORQ" version="1.2.011">
-<Header>
+<From>
+<To>
+<Sender>
</Header>
-<Request deploymentMode="test">
-<OrderRequest>
+<OrderRequestHeader type="new" orderType="release" orderDate="2017-06-15" orderID="7500610099-0">
+<ItemOut requestedDeliveryDate="2017-06-02" quantity="1" lineNumber="5">
+<ItemOut requestedDeliveryDate="2017-06-02" quantity="1" lineNumber="5">
+<ItemOut requestedDeliveryDate="2017-05-23" quantity="1" lineNumber="1">
+<ItemOut requestedDeliveryDate="2017-05-23" quantity="1" lineNumber="2">
-<ItemOut requestedDeliveryDate="2017-05-23" quantity="9" lineNumber="3">
-<ItemID>
<SupplierPartID>1*VP470</SupplierPartID>
</ItemID>
我需要阅读价值的节点内<SupplierPartID>
感谢, 萨蒂什南比亚d
答
我们可以使用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);
Pattern pattern = Pattern.compile("<SupplierPartID>(.*)</SupplierPartID>");
Matcher matcher = pattern.matcher(content);
while (matcher.find())
{
System.out.println(matcher.group(1));
}
}
希望这可以帮助你。谢谢
+0
下面的代码像宝石一样工作 – user3387482
答
下面的代码像宝石一样工作。
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//Parsing of xml is done here
Document doc = builder.parse(new File("C:\\Users\\User_Name\\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("SupplierPartID");
int totalSupplierPartID =list.getLength();
System.out.println("Total no of SupplierPartID : " + totalSupplierPartID);
//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("SupplierPartID : " + childNode.getTextContent());
}
这是一个单独的XML文件,你会通过普通的Java从本地读取它? –
@santhoshkumar - 是的这是一个单独的文件,我会从共享位置读取它。但现在让我们假设我在桌面上有这个文件并从本地读取它。 – user3387482
你为什么要使用硒?您可以使用xml解析器或Xpath来解析xml以仅选择该元素 – metar