【问题标题】:Creating custom XML from XPaths stored in text file [closed]从存储在文本文件中的 XPath 创建自定义 XML [关闭]
【发布时间】:2014-02-07 19:20:20
【问题描述】:

我有一个文本文件,其中包含来自其他(源)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:-

source-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>

//等等等等……

简而言之,我希望所有文本或标签都成为父节点,所有相应的属性都成为它们的子节点。

如何在 java 中创建自定义 xml?

感谢任何帮助... :)

【问题讨论】:

  • 到现在..我能够生成 source-xpaths.txt 文件..我需要最后一部分的帮助。

标签: java xml dom xpath sax


【解决方案1】:

您需要将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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 2011-12-03
    相关资源
    最近更新 更多