用户定义的xml转换

时间:2009-09-24 07:01:15

标签: .net xml linq dynamic transformation

我有一些示例xml数据,例如:

<?xml version="1.0" encoding="utf-8"?>
<Account>
<User>
  <FirstName>John</FirstName>
  <LastName>Doe</LastName>
</User>
<LoginDetails Sequence="1">
  <LoginDate>01/01/09</LoginDate>
  <Status>Successful</Status>
</LoginDetails>
<LoginDetails Sequence="2">
  <LoginDate>01/02/09</LoginDate>
  <Status>Failed</Status>
</LoginDetails>
</Account>

我有这个xml的模式文件。 我想提供允许最终用户执行以下操作的功能:

  1. 定义要显示的元素。
  2. 为每个元素定义标签。
  3. 当我加载真实的xml数据时,让用户能够保存此信息,然后在我的应用程序中在运行时使用它。
  4. 我想也许我可以使用LINQ或Dynamic LINQ来做到这一点。我想我可以先解析xml或使用架构显示所有节点的列表(可能在树视图中?),让用户检查他们想要显示的元素并输入标签。

    这听起来像个好主意吗?我在考虑使用XSLT,但我认为它在LINQ中可能更容易。任何人都可以提供一些帮助我实现这一目标的链接或信息吗?那里有更好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

您可以使用XSLT - 请记住,它很难阅读和维护。如果您确实使用XSLT我建议你可以使用一个名为MapForce的好工具(如果你负担得起),它将帮助你使用WYSIWYG编辑器创建XSLT文件。

答案 1 :(得分:0)

最终用户不需要知道XSLT,但我确实需要为他们提供一种简单的方法来决定要显示哪个元素。

所以似乎最好的答案是创建一个UI,允许用户选择他们想要显示的节点,然后简单地将这些信息序列化为一个简单的xml文件,这样如果他们需要重新加载,我可以对其进行反序列化设置页面并稍后更改。

然后我可以根据这些设置生成和XSLT并利用它来转换传入的xml?也许,我可以为高级用户提供直接编辑XSLT的功能吗?

这看起来合情合理吗?