如何在XML中使用java方法的返回值



我有一个类似的xml

<step>
<navigationButtonSelector>.step-one-action-button</navigationButtonSelector>
<formField>
<name>emailAddress</name>
<value>new2@gmail.com</value>
</formField>
</step>

现在我无法对值进行硬编码(new2@gmail.com)在这里。相反,我必须随机生成一个字符串,并在运行自动化套件时使用它。我可以在运行时在xml本身中生成一个随机字符串吗。

另一种可能性是创建一个返回随机字符串的Java方法。现在,我如何在XML文件中使用该值呢?请帮助

这段代码看起来可能很臃肿,但实际上非常强大,以防您需要执行更多的编辑。它显示了从字符串到字符串的解析、修改和序列化XML数据的整个往返过程。

String xml = "<step>n" +
"                <navigationButtonSelector>.step-one-action-button</navigationButtonSelector>n" +
"                <formField>n" +
"                    <name>emailAddress</name>n" +
"                    <value>new2@gmail.com</value>n" +
"                </formField>n" +
"</step>";
// parse document
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = db.parse(new InputSource(new StringReader(xml)));

// find editing locatioin
XPath xpath = XPathFactory.newInstance().newXPath();
Element value = (Element)xpath.evaluate("/step/formField/value", doc, XPathConstants.NODE);

// replace value
while (value.hasChildNodes()) {
value.removeChild(value.getFirstChild());
}
value.appendChild(doc.createTextNode("a random string"));
// serialize document
StringWriter sw = new StringWriter();
Transformer t = TransformerFactory.newDefaultInstance().newTransformer();
t.transform(new DOMSource(doc), new StreamResult(sw));
xml = sw.toString();
System.out.println(xml);

最新更新