Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 用户定义的xml转换_.net_Xml_Linq_Dynamic_Transformation - Fatal编程技术网

.net 用户定义的xml转换

.net 用户定义的xml转换,.net,xml,linq,dynamic,transformation,.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<

我有一些示例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的模式文件。 我希望提供允许最终用户执行以下操作的功能:

定义要显示的元素。 为每个元素定义一个标签。 让用户能够保存这些信息,然后在我加载真正的xml数据时在运行时在我的应用程序中使用这些信息。 我在想也许我可以使用LINQ或动态LINQ来实现这一点。我想我可以先解析xml,或者使用模式在树视图中显示所有节点的列表?并让用户检查要显示的元素,然后键入标签


这听起来是个好主意吗?我想使用XSLT,但我认为在LINQ中可能更容易。有人能给我提供一些链接或信息来帮助我实现这一点吗?有更好的解决方案吗?

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

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

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

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


这看起来合理吗?

谢谢您的回复!是的,我在尝试XSLT,但我想到了Linq b/c,我很难使用XSLT,我认为对于其他最终使用该项目的程序员来说,使用XSLT会更容易。我的问题是我不太确定怎么做。从我所读到的内容来看,我知道这应该是可能的,但我需要一些入门帮助。如前所述,您的任务更适合XSLT,而不是LINQ到XML。特别是因为XSLT是关于如何在这种情况下显示数据的用户配置,所以我应该根据用户从用户界面树视图、列表或其他选择生成XSLT,然后保存它?如果是这样,如果他们想重新加载他们所做的任何设置并进行更改,该怎么办。阅读xslt然后尝试重新创建用户界面中选择的设置似乎有点尴尬,不是吗?我在想,如果我可以将一些对象映射到xml,然后使用它来序列化用户的设置,那么检索和显示会更容易?哦,我现在明白你的意思了。通过最终用户可定制,我假设一些相当高级的最终用户能够编辑XSLT以获得他们想要的输出—这是最灵活的选项。如果您希望它是UI驱动的,那就另当别论了,尽管它仍然可能不会改变XSLT参数化的事实,在这种情况下,它可能比LINQ更适合转换。您能否更精确地指定用户应该能够定义要显示哪些元素以及为每个元素定义标签的程度?您是指输入XML中的每个元素,还是指根的直接子元素?另外,给定输入XML和规则,所需的输出是什么-HTML/ASP.NET?WinForm?WPF窗口/页面?是的,它看起来很合理。允许用户直接提供XSLT是一种很好的方式,因为有很多强大的可视化XSLT编辑工具可以让用户从输入XML开始,并配置他希望输出的方式IIRC Altova提供了类似的功能。对于提供自己的可视化编辑器并将其保存到配置XML的情况,实际上也可以使用XSLT将该XML转换为XSLT: