Tag: xsd

WCF MessageContract包装和列表

我收到了客户关于他们的网络服务客户端如何工作的规范。 规范是从服务发送和接收的实际SOAP XML消息以及相应的XSD。 客户希望我实施符合客户要求的Web服务。 客户端使用axis2 ws-stack编写,我想要做的是在WCF中创建一个Web服务,它将接受客户端发出的请求并返回符合他们期望的XML的响应。 在这个问题中,我将只发布与请求相关的XML和XSD,因为如果我可以使用它,响应将以类似的方式进行。 我收到的XML如下: POST /axis2/services/SampleService HTTP/1.1 Content-Type: text/xml; charset=UTF-8 SOAPAction: “sendCommand” User-Agent: Axis2 Host: 127.0.0.1:7777 Content-Length: 347 5 这是相应的XSD的样子: 我已经开始用WCF / MessageContract格式编写类型了,但是我在列表等方面遇到了困难,因为它们是双重包装的。 我的MessageContracts看起来像这样: [MessageContract(WrapperName = “SendCommandRequest”, WrapperNamespace = “http://something.org/”)] public class SendCommandRequest { [MessageBodyMember(Name=”CMD”)] public CMD cmd = new CMD(); } [MessageContract(IsWrapped=false)] public class CMD { [MessageBodyMember(Name=”Station”)] public List stations […]

如何使用包含相同元素/类的different.xsd命名空间?

我有点理解我应该如何使用xml文件,所以我希望你们可以指导我正确的dirrection :)希望我能解释我的问题清楚:) 我有很多.xsd文件都是从上到下连接的。 所以我有10个带有命名空间A的.xsd和带有命名空间B的10个.xsd。让我们说两个命名空间代表每个自己的汽车。 这意味着它们共享许多相同的元素,如引擎,滚轮等。我认为我可以使用xsd.exe,然后只需在我的C#代码中序列化xml文件。 但是,当我将.xsd文件转换为两个.cs文件(每个命名空间/汽车一个)时,它们共享许多相同的类。 当我想将两个.cs文件添加到我的项目时,这会产生问题。 不能有两个同名的class级…我该如何解决这个问题? 我使用错误的工具还是完全误解了我应该做什么? 🙂 .cs文件的开头: //—————————————————————————— // // This code was generated by a tool. // Runtime Version:4.0.30319.261 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //—————————————————————————— using System.Xml.Serialization; // // This source code was auto-generated […]

C#中的XML模式1.1断言

我正在使用以下xml架构validation一些xml文件: String xsdMarkup = “[…] […] “; XmlSchemaSet schemas = new XmlSchemaSet(); schemas.Add(“”, XmlReader.Create(new StringReader(xsdMarkup))); Console.WriteLine(“Validating doc …”); docToValidate.Validate(schemas, (sender, e) => { Console.WriteLine(e.Message); valid = false; }, true); 我只是想介绍一些断言标签,以便进行更强大的validation。 但这导致例外: System.Xml.Schema.XmlSchemaException:此上下文不支持http://www.w3.org/2001/XMLSchema:assert-element 。 我现在还不知道的是…… 我在xsd中的错误位置使用了assert-element http://www.w3.org/2001/XMLSchema-Namespace不支持XML Schema的1.1版本,因此不支持assert-elements C#XmlSchemaSet不知道如何处理断言元素 提前感谢您的帮助!

使用带有WCF SOAP的XmlSerializer添加根xmlns

我有一个类文件,由我们的客户从第三方提供的XML Schema文档生成。 我应该能够将这个生成的类用于客户的SOAP Web服务,但是我遇到了一些问题。 我已经创建了一个ServiceContract接口,因此我可以使用WCF ChannelFactory连接到Web服务,如下所示: [ServiceContract(Namespace = “http://theircompany.co.uk/theirapp/v1”)] [XmlSerializerFormat] public interface IWebService { [OperationContract] EPSStatus serviceNotifyDataEventSet( [XmlElement(Namespace = “http://www.thirdparty.org/thirdapp”)] DataEventSet dataSet ); } EPSStatus和DataEventSet都在我生成的类文件中。 DataEventSet的重要部分: [System.CodeDom.Compiler.GeneratedCodeAttribute(“xsd”, “2.0.50727.42”)] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute(“code”)] [System.Xml.Serialization.XmlTypeAttribute(Namespace=”http://www.thirdparty.org/thirdapp”)] [System.Xml.Serialization.XmlRootAttribute(Namespace=”http://www.thirdparty.org/thirdapp”, IsNullable=false)] public partial class DataEventSet { //… } 当我现在尝试调用IWebService.serviceNotifyDataEventSet我得到以下SOAP主体(在其服务器上启用了WCF跟踪): 47245361157 141728877218 2012-06-28T10:07:57.218+01:00 OSACBM_TIME_MIMOSA 42 0 SITE_SPECIFIC 141728877218 2012-06-28T10:07:57.218+01:00 OSACBM_TIME_MIMOSA 所以,我能够调用Web服务,看起来好像我的数据正确序列化,但是在服务器端, dataSet会出现空值。 我也从一个与以下机构合作的客户端得到了一个跟踪: […]

使用抽象复杂类型为模式生成类

我正在使用一些定义抽象复杂类型的模式,例如。 然后,此类型由模式中的另一个复杂类型引用: 当我运行“xsd.exe / d / l:CS MySchema.xsd”时,我收到此错误: 错误:处理MySchema.xsd’时出错。 – 为DataSet”生成代码时出错。 – 无法将输入xml文件内容转换为DataSet。 DataSet无法为节点Data实例化抽象ComplexType。 – DataSet无法为节点Data实例化抽象ComplexType。 它似乎不是无效的架构。 还有其他人遇到过这个问题吗? 谢谢 缺口

像在XSD中一样使用精确命名空间生成DataContracts

我们必须将我们的项目与后端Oracle平台集成。 这种集成是通过各种Web服务实现的。 我有所有这些集成的WSDL和XSD。 我需要从这些WSDL和XSD生成DataContracts。 现在的问题是,大多数这些集成共享一些常见的数据类型。 我想重复使用它们。 例如, Integration1: oracle / common / commonDataTypes.xsd oracle / integration1 / someXSD.xsd oracle / ebo / baseTypes.xsd Integration2: oracle / common / commonDataTypes.xsd oracle / integration2 / someXSD.xsd oracle / ebo / baseTypes.xsd Integration3: oracle / commonDataTypes.xsd oracle / integration2 / someXSD.xsd oracle / ebo / baseTypes.xsd 在这种情况下,我想在integration1和2之间重用oracle.common.CommonDataTypes。 到目前为止,我已经尝试了WSCF.blue和WSCF。 […]

C#可序列化类到xsd

有没有办法从serialisable c#类输出xml架构(xsd)? 我看过网络,但我不确定我正在寻找合适的东西。 谢谢

如何在C#中查找XSD根元素

美好的一天。 我所知。 XML文件中有一个根元素。 但是从XSD文件结构来看,获取根元素值并不容易。 有没有办法做到这一点? (我不想在我的项目中使用硬代码来查找XSD根元素值。我想找到“RootValueHere”的根元素 谢谢。

如何使用多个表从SQL表创建XML / XSD

如何使用多个表从SQL表创建XML / XSD 我想要做的是从数据库(或数据库模式)创建XML模式 这篇文章有一些有趣的代码 尤其 DataSet results = new DataSet(); SqlCommand command = new SqlCommand(“SELECT * FROM table”, new SqlConnection(connectionString)); SqlDataAdapter sqlAdapter = new SqlDataAdapter(command); sqlAdapter.FillSchema(results, SchemaType.Mapped);//Fills dataset with schema from query results.WriteXmlSchema(mySchema); 但是如何从多个表生成此XML架构? 如果我这样做 Select * from table1,table2 所有数据都在XML中的一个大blob中 我想要的是XML中定义的每个表与它的内容分开。 某物

创建新的类型化DataSet对象(c#)

我使用DataGrid来显示xml文件。 Grid的DataSource是一个Typed DataSet。(使用schema) Assembly assembly = Assembly.GetExecutingAssembly(); Stream stream = assembly.GetManifestResourceStream(“XML_Reader.Resources.schema.xsd”); XmlSchemaSet schemas = new XmlSchemaSet(); XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.Schema; settings.Schemas.Add(null, XmlReader.Create(stream)); using (XmlReader reader = XmlReader.Create(xmlFile, settings)) { newDataSet.ReadXml(reader); } dataGrid.DataSource = newDataSet; 我在我的项目中添加了一个xsd模式,并使用MSDataSetGenerator生成newDataSet。 (VS2008)。 现在我想为我读取的每个新( 分层xml )文件创建一个新的DataSet对象。 创建一个新的DataSet对象不是问题,但数据类型是不正确的,所以我不能很好地对它们进行排序(特别是数字字段)。 在我看来,我需要创建一个新的Typed DataSet 。 那么我该如何解决这个问题呢?