Tag: xml

ASP.NET Web API中的XML命名空间

我目前正在开发一个项目,要求我从端点和JSON输出XML。 我有以下型号: [DataContract(Namespace=”http://www.yale.edu/tp/cas”)] [XmlType(“serviceResponse”)] [XmlRoot(Namespace=”http://www.yale.edu/tp/cas”)] public class ServiceResponse { [XmlElement(“authenticationSuccess”)] public AuthenticationSuccess Success { get; set; } [XmlElement(“authenticationFailure”)] public AuthenticationFailure Failure { get; set; } } 当success不为null时,输出如下: 现在,我可以看到,显然,我没有为命名空间分配前缀,我告诉元素是其中的一部分。 我的问题是我找不到使用媒体格式化程序在MVC4中添加名称空间前缀的地方。 我在global.asax中有以下内容: GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true; GlobalConfiguration.Configuration.Formatters.XmlFormatter.RemoveSerializer(typeof(Models.ServiceResponse)); GlobalConfiguration.Configuration.Formatters.XmlFormatter.SetSerializer(typeof(Models.ServiceResponse), new Infrastructure.NamespaceXmlSerializer(typeof(Models.ServiceResponse))); 我创建了一个基于XmlSerializer的自定义序列化程序,试图拦截写入请求并在那里添加命名空间列表。 这个方法的问题是,现在我在每个可重写方法中都有断点,并且在序列化时没有一个断点导致我相信我的序列化器没有被使用。 是否有一些内置的方法来完成我想要做的事情,或者我是否在重新实现XmlMediaTypeFormatter以在序列化对象时传入命名空间?

C#将XML反序列化为对象

将一些xml反序列化为C#中的对象时遇到问题。 我收到的错误是…… xmlns=”> was not expected. 我收到的用于生成课程的XSD如下…… Liste des avis de remboursements Avis de remboursement lié à une DC (剪断) 我尝试导入的文件如下: 2010-06-22 25.0 0.0 25.0 0.0 0.0 0.0 0 C 319984 030 (剪断) 我认为正在发生的事情是,当.Net尝试对xml进行去磁化时,它会触及包含“xmlns:ast”的第一行并对其进行投诉。 据我所知,.Net将尝试将属性映射到目标类中的公共属性(并且它不会找到一个名为xmlns。或者我如何处理名称空间有问题。 我的反序列化代码如下所示: XmlDocument _Doc = new XmlDocument(); _Doc.Load(@”C:\inputfile.xml”); XmlSerializer _XMLSer = new XmlSerializer(typeof(ListeAvisRemboursements)); ListeAvisRemboursements _X = (ListeAvisRemboursements)_XMLSer.Deserialize(new StringReader(_Doc.OuterXml)); 我还尝试了将命名空间管理器添加到XML文档的各种组合。 XmlNamespaceManager _Ns […]

反映类型的错误 – XML序列化问题

我有一个需要写入XML文件的Dictionary对象。 字典包含String类型作为Key,自定义类的Object(从System.Windows.Forms.Control派生)作为Value。 namespace SharpFormEditorDemo { [Serializable] public static class common { public static Dictionary dicControls = new Dictionary(); public static Object objSelected = new Object(); public static int ctrlId = 0; //The serialization and Deserialization methods. public static void Serialize(XmlTextWriter xmlTextWriter,Dictionary dic) { xmlTextWriter.WriteStartDocument(); ControlSerializer file = new ControlSerializer(dic); XmlSerializer xmlSerializer = new XmlSerializer(typeof(ControlSerializer)); xmlSerializer.Serialize(xmlTextWriter, […]

C#通过SSL / TLS获取xml站点 – https://

我需要能够从控制台程序中的https网站读取xml / rss。 直到现在我的程序支持普通的http,我一直在搜索,但我似乎找不到一个简单的方法来实现对https的支持。 如果网站有一个有效的证书,这没关系,但我会擅长获取如何检查这些证书的提示。 我可能不太了解这个,所以任何暗示都是适当的! 我目前为http做的是: XmlTextReader rssReader; XmlDocument rssDoc; rssReader = new XmlTextReader(url); rssDoc = new XmlDocument(); rssDoc.Load(rssReader); 在没有可信证书的站点上尝试此操作时,我收到错误消息:“基础连接已关闭:无法为SSL / TLS安全通道建立信任关系。” string url = “https://somesite.com”; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream resStream = response.GetResponseStream(); 我的程序需要支持受信任和不受信任的https站点。 程序正在服务器上运行,因此必须在代码中处理不受信任的https站点。

LINQ to XML – 使用前缀访问后代

我有一个像这样的示例xml文件 Name address Zip 所有节点都有一个前缀值作为vs,谁能告诉我如何解析这个文件来读取名称和地址信息? 我是LINQ的新手。 任何有关这方面的帮助将不胜感激。 谢谢!

在C#中的节点内搜索的XmlNode.SelectSingleNode语法

我想限制我搜索子节点在我当前节点内。 例如,我有以下代码: XmlNodeList myNodes = xmlDoc.DocumentElement.SelectNodes(“//Books”); foreach (XmlNode myNode in myNodes) { string lastName = “”; XmlNode lastnameNode = myNode.SelectSingleNode(“//LastName”); if (lastnameNode != null) { lastName = lastnameNode.InnerText; } } 我希望从foreach内部的当前myNode中搜索LastName元素。 发生的事情是找到的LastName始终来自第一个带有myNodes的节点。 我不想硬编码LastName的确切路径,而是允许它灵活地找到myNode的内部。 我原以为在myNode上使用SelectSingleNode方法会限制搜索只能在myNode的xml内容中,而不包括父节点。

如何在使用XmlSerializer时添加换行符

我想知道如何在使用XmlSerializer时为每个元素添加换行符? 示例代码: XmlSerializer serializer = new XmlSerializer(typeof(xxx)); using (XmlWriter xmlWriter = XmlWriter.Create(“test.xml”) { serializer.Serialize(xmlWriter, xxx); }

在.NET(C#)Web服务中原生地返回XML?

我意识到.NET中的SOAP webservices返回web方法返回的任何对象的XML表示,但是如果我想在XML中返回数据格式,那么存储它的最佳对象是什么? 我正在使用这个问题的答案来编写我的XML,这里是代码: XmlWriter writer = XmlWriter.Create(pathToOutput); writer.WriteStartDocument(); writer.WriteStartElement(“People”); writer.WriteStartElement(“Person”); writer.WriteAttributeString(“Name”, “Nick”); writer.WriteEndElement(); writer.WriteStartElement(“Person”); writer.WriteStartAttribute(“Name”); writer.WriteValue(“Nick”); writer.WriteEndAttribute(); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndDocument(); writer.Flush(); 现在我可以将此输出作为String返回到我的调用webmethod,但它显示为 XML HERE ,是否还有返回完整的xml? 请在您的答案中,举例说明如何将所述对象与XmlWriter或其他内部对象一起使用(如果您认为XmlWriter是一个糟糕的选择)。 System.Xml包(命名空间)有很多对象,但我无法发现关于如何一起使用对象或在什么情况下使用什么的正确文档。

如何抑制列表属性的XML标记

序列化时是否可以避免列表属性标记? //[Serializable()] – removed, unnecessary public class Foo { protected List fooBars = new List(); public virtual List FooBars { get { return fooBars; } set { fooBars = value; } } } // [Serializable()] – removed, unnecessary public class FooBar { public int MyProperty { get; set; } } 序列化Foo给出(评论除外): 7 9 通缉输出: 7 […]

WS-Security中PasswordDigest的工作算法

我遇到了WS-Security的问题,并创建了一个正确的随机数和密码摘要。 我成功使用SoapUI将数据发送到Oracle系统。 所以我能够拦截SoapUI的调用(将代理更改为127.0.0.1端口8888以使用Fiddler失败,因为它是通过SSL) – 拦截非常重要,因为这些值只能使用一次。 然后我可以获取nonce,创建时间戳和密码摘要将它们放入我的代码中(我只有30秒的时间来执行此操作,因为值不会持续!)并且我获得了成功。 所以我知道它不是别的 – 只是密码摘要。 我使用的值如下: Nonce: UIYifr1SPoNlrmmKGSVOug== Created Timestamp: 2009-12-03T16:14:49Z Password: test8 Required Password Digest: yf2yatQzoaNaC8BflCMatVch/B8= 我知道创建摘要的算法是: Password_Digest = Base64 ( SHA-1 ( nonce + created + password ) ) 使用以下代码(来自Rick Strahl的post ) protected string GetSHA1String(string phrase) { SHA1CryptoServiceProvider sha1Hasher = new SHA1CryptoServiceProvider(); byte[] hashedDataBytes = sha1Hasher.ComputeHash(Encoding.UTF8.GetBytes(phrase)); return Convert.ToBase64String(hashedDataBytes); } […]