我有一个文本文件,其中包含来自其他(源)xml文件的xpath。但是,现在我想使用这些xpath来创建我的自定义xml文件。
以下文件如下: -
Source.xml
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
<title> My Page</title>
</head>
<body>
<a href="abc.html">HomePage</a>
<form id="my form" name="form 22" class="forms">
<table id="table1">
<tbody>
<tr>
<td>
<a> UserName </a>
<input type="textbox" id="username" name="uname" class="login"/>
</td>
</tr>
<tr>
<td>
<a> Password </a>
<input type="textbox" id="password" name="pwd" class="login"/>
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
使用存储在文本文件中的java生成的xpath: -
源xpaths.txt
//html[1]/head[1]/title[1]="My Page"
//html[1]/body[1]/a[1][@href='abc.html']
//html[1]/body[1]/a[1]="HomePage"
//html[1]/body[1]/form[1][@id='my form']
//html[1]/body[1]/form[1][@name='form 22']
//html[1]/body[1]/form[1][@class='forms']
//html[1]/body[1]/form[1]/table[1][@id='table1']
//html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[1]/td[1]/a[1]="UserName"
//html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[1]/td[1]/input[1][@type='textbox']
//html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[1]/td[1]/input[1][@id='username']
//html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[1]/td[1]/input[1][@name='uname']
//html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[1]/td[1]/input[1][@class='login']
//html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[2]/td[1]/a[1]="Password"
//html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[2]/td[1]/input[1][@type='textbox']
//html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[2]/td[1]/input[1][@id='password']
//html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[2]/td[1]/input[1][@name='pwd']
//html[1]/body[1]/form[1]/table[1]/tbody[1]/tr[2]/td[1]/input[1][@class='login']
现在,我希望我的自定义xml由这个xpath形成,如下所示: -
<My Page>
</My Page>
<HomePage>
<href>abc.html</href>
</HomePage>
<UserName>
<type>textbox</type>
<id>username</id>
<name>uname</name>
<class>login</class>
</UserName>
<Password>
<type>textbox</text>
<id>password</id>
<name>pwd</name>
<class>login</class>
</Password>
//等等......
简而言之,我希望所有text或tags中的文本都是父节点,所有相应的属性都是它们的子节点。
如何在java中创建自定义xml?
感谢任何帮助...... :)
答案 0 :(得分:0)
您需要将XSL transformation应用于Source.xml文件。 XSL文件使用XPath表达式,例如你的。
Java使用javax.xml.transform包支持XSL转换:
File sourceFile = new File("Source.xml");
File customXmlFile = new File("custom.xml");
Source source = new StreamSource(sourceFile);
Result result = new StreamResult(customXmlFile);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION. "yes");
transformer.setOutputProperty(OutputKeys.INDENT. "yes");
transformer.transform(source, result);