Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
基于XSD创建XML编辑器的C#-库_C#_Xml_Xsd_Intellisense - Fatal编程技术网

基于XSD创建XML编辑器的C#-库

基于XSD创建XML编辑器的C#-库,c#,xml,xsd,intellisense,C#,Xml,Xsd,Intellisense,所以我计划制作一个XML编辑器模块,它能够使用XSD进行即时验证,并在当前编辑位置显示IntelliSense 验证部分很简单,但我在创建IntelliSense时遇到了问题 有没有使IntelliSense变得简单的库,或者没有其他方法可以从头开始编写它? 应该会给你一个良好的开端。试试看。它可用于WinForms、WPF和Silverlight,并包括对抽象语法树构造的支持、视觉提示等常识。我们正在我们的一个项目中使用。性能不是很好,有一些商业产品也很便宜,质量也很高 此外,我相信是最强大的

所以我计划制作一个XML编辑器模块,它能够使用XSD进行即时验证,并在当前编辑位置显示IntelliSense

验证部分很简单,但我在创建IntelliSense时遇到了问题

有没有使IntelliSense变得简单的库,或者没有其他方法可以从头开始编写它?

应该会给你一个良好的开端。

试试看。它可用于WinForms、WPF和Silverlight,并包括对抽象语法树构造的支持、视觉提示等常识。

我们正在我们的一个项目中使用。性能不是很好,有一些商业产品也很便宜,质量也很高


此外,我相信是最强大的免费语法着色编辑器组件。

使用Visual Studio(甚至是Express)怎么样?它内置了XML Intellisense。

您可以使用.NET类:

这两个关键方法是:返回XmlSchemaObject的GetExpectedParticles和GetExpectedAttribute。在使用这些元素之前,您需要通过验证所有前面的和祖先的元素和属性来设置验证器的上下文


您还需要对从XmlSchemaObject派生的类使用方法,这些方法公开了编译后模式对象模型的各个部分。模型层次结构itelf与XSD文件中的XML结构非常相似。您可能需要使用递归,并且有很多潜在的陷阱,例如在处理替换组时,但是一个合理的解决方案可以在大约2000行c#中完成。

我需要一些非常简单的东西。例如:加载(xml,xsd)可用元素(currentElement,insertPosition),包括内置的模式验证!我不需要一个能做到这一点的应用程序。我需要为自己的应用程序制作自己的模块。这就是为什么我说我需要一个库/类…@Gapi:visualstudio是非常可扩展的。特别是,您可以基于VisualStudio创建应用程序。看。特别是,看看VisualStudioshell。每次使用VisualStudio时,您都在VisualStudioShell之上使用此功能进行构建。这就是微软所做的创建你从货架上购买的软件包的工作。我将对此进行研究。谢谢,唯一的问题是Silverlight没有这个类=)好的,我测试了这个类。它不像我要求的那样有效。使用这个类,我只能基于当前的验证器对象层次结构(XSD)而不是基于创建的XML文件获取预期的元素。您需要获取XML中插入符号位置的节点路径,然后在GetExpectedParticles调用之前遍历节点以先设置验证器对象上下文。即使在这之后,您也需要转换预期的粒子,具体取决于类型,XSD是非常重要的,因此需要2000行代码。