更容易从混合xml / html中提取前缀元素的方法

时间:2013-04-04 09:34:44

标签: html xml xslt

这是我的工作噩梦:我们有一堆文件是html页面,但是包含额外的xml元素(所有前缀都是我们公司名称'TLA'),以便为我现在正在重写的旧程序提供数据和结构

示例表单:

<html >
<head>
    <title>Highly Simplified Example Form</title>
</head>
<body>
    <TLA:document>
        <TLA:contexts>
            <TLA:context id="id_1" value=""></TLA:context>
        </TLA:contexts>
        <TLA:page>
            <TLA:question id="q_id_1">
                <table>
                    <tr>
                        <td>
                            <input id="input_id_1" type="text" />
                        </td>
                    </tr>
                </table>
            </TLA:question>
        </TLA:page>
        <!-- Repeat many times -->
    </TLA:document>
</body>
</html>

我的任务是编写一个预处理器,将这样的文档拆分为两个文档:一个只包含'TLA'元素的xml文件和一个只包含html元素的html文件。

示例XML:

<?xml version="1.0" encoding="utf-8" ?>
<TLA:document>
    <TLA:contexts>
      <TLA:context id="id_1" value=""></TLA:context>
    </TLA:contexts>
    <TLA:page>
      <TLA:question  id="q_id_1">
      </TLA:question>
    </TLA:page>
    <!-- Repeat many times -->
</TLA:document>

示例HTML:

<html >
<head>
    <title>Highly Simplified Example Form</title>
</head>
<body>
    <table>
        <tr>
            <td>
                <input id="input_id_1" type="text" />
            </td>
        </tr>
    </table>
    <!-- Repeat many times -->
</body>
</html>

现在我可以通过一次处理一个元素并将它们复制到新文档来实现这一点,但我认为通过使用一个或两个传递变换或一些聪明的序列化可能有更简单的方法来做到这一点但是我不知道要探索哪些途径。

那么有没有人建议如何处理这个?理想情况下VB.net,但C#或其他东西也是可以接受的。

更新

似乎xslt是这样做的方式,但我对它知之甚少,我仍然需要一些帮助。似乎// namespace :: TLA可能是提取数据元素的正确xpath,但我不知道如何实现它。

1 个答案:

答案 0 :(得分:2)

XSLT是解决此问题的最佳选择。