Tag: xml

从XML名称标记中删除无效字符 – RegEx C#

我有一个带有xml数据的字符串,我从Web服务中提取。 数据很丑陋,并且在xml的Name标签中有一些无效的字符。 例如,我可能会看到类似的东西: Scott the CoderMy address 地址名称字段中的#无效。 我正在寻找一个正则表达式,将从名称标签中删除所有无效字符但是将所有字符保留在xml的Value部分中。 换句话说,我想使用RegEx仅从开头名称标签和结束名称标签中删除字符。 其他一切都应该保持不变。 我还没有所有无效的字符,但这会让我开始:#{}&() 有可能做我想做的事吗?

C#Xml-使用IXmlSerializable对派生类进行序列化

我有一个与XML序列化兼容的基类和一个实现IXmlSerializable的派生类。 在此示例中,基类确实实现了IXmlSerializable: using System.Diagnostics; using System.Text; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; namespace XmlSerializationDerived { public class Foo { public int fooProp; public XmlSchema GetSchema() { return null; } public void ReadXml(XmlReader reader) { fooProp = int.Parse (reader.ReadElementString (“fooProp”)); } public void WriteXml(XmlWriter writer) { writer.WriteElementString (“fooProp”, fooProp.ToString ()); } } public class Bar : […]

如何使用C#.NET中的#region / #endregion(大纲)等效组织xml数据

我想使用预处理器命令(例如C#/ .NET中的#region / #endregion命令)将我的XML数据组织成可折叠和可扩展的。 我正在编辑此文件Visual Studio 2008。 有这样的能力吗? 我用谷歌搜索无济于事。 到目前为止,我最接近的是扩展和折叠标签本身,所以我可以在它们之间崩溃 (this is collapsed)

XmlDocument Save保持文件打开

我有一个简单的c#函数,它创建一个基本的XML文件并保存: private void CreateXMlFile(string Filename, string Name, string Company) { XmlDocument doc = new XmlDocument(); XmlNode docNode = doc.CreateXmlDeclaration(“1.0”, “UTF-8”, null); doc.AppendChild(docNode); XmlNode licenseNode = doc.CreateElement(“license”); doc.AppendChild(licenseNode); XmlNode node = doc.CreateElement(“Name”); node.AppendChild(doc.CreateTextNode(Name)); licenseNode.AppendChild(node); node = doc.CreateElement(“Company”); node.AppendChild(doc.CreateTextNode(Company)); licenseNode.AppendChild(node); doc.Save(Filename); } 当我尝试编辑或删除文件时,我总是会遇到以下错误: 该进程无法访问该文件,因为该文件正由另一个进程使用。 XmlDocument没有任何内置的dispose或close例程,并想知道如何在以后编辑或删除它之前强制关闭文件。 我试图使用StreamWriter保存文件: StreamWriter outStream = System.IO.File.CreateText(outfile); outStream.Write(data); outStream.Close(); 但这并没有对同样的错误产生影响。 您的建议被大大接受。 谢谢

将XML反序列化为对象数组

我正在尝试将XML文件反序列化为对象数组,但我正在接收空对象。 我的问题看起来类似于: 如何将xml反序列化为一个对象数组? 但我似乎无法创建一个inheritanceIXmlSerializable的类。 也就是说,我不认为这种方法是必要的。 难道我做错了什么? 文件对象 [XmlType(“file”)] public class File { [XmlElement(“id”)] public string Id { get; set; } [XmlElement(“company_name”)] public string Company_Name { get; set; } [XmlElement(“docs”)] public HashSet Docs { get; set; } } Doc对象 [XmlType(“doc”)] public class Doc { [XmlElement(“valA”)] public string ValA { get; set; } [XmlElement(“valB”)] public string ValB […]

从XDocument中删除节点

这将删除文档中的所有元素: XDocument document = XDocument.Load(inputFile); foreach (XElement element in document.Elements()) { element.Remove(); } document.Save(outputFile); 这没有任何影响: XDocument document = XDocument.Load(inputFile); foreach (XElement element in document.Elements()) { //element.Remove(); foreach (XElement child in element.Elements()) child.Remove(); } document.Save(outputFile); 我在这里错过了什么吗? 由于这些都是对XDocument中元素的引用,因此更改是否应该生效? 我还有其他方法可以从XDocument中删除嵌套的子项吗? 谢谢!

Linq存储过程返回XML

我正在使用Entity Framework代码优先方法。 我想从DbContext类调用存储过程并获取XML输出。 存储过程(SQL Server): CREATE PROCEDURE xml_test AS BEGIN DECLARE @xml1 xml SET @xml1 = (SELECT * from Product FOR XML RAW) SELECT @xml1 AS my_xml END LINQentity framework: using (DBContext db = new DBContext()) { var ProductList = await db.Database.ExecuteSqlCommandAsync(“exec xml_test”); } 这里ProductList列表返回-1。 我想获取存储过程返回的xml输出。 注意:我也尝试了类似的方法: ExecuteSqlCommand,SqlQuery没有帮助。

反序列化嵌套类时,不期望xmlns =”

尝试在服务器上序列化类,将其发送到客户端并在目标上反序列化时,我遇到了问题。 在服务器上,我有以下两个类: [XmlRoot(“StatusUpdate”)] public class GameStatusUpdate { public GameStatusUpdate() {} public GameStatusUpdate(Player[] players, Command command) { this.Players = players; this.Update = command; } [XmlArray(“Players”)] public Player[] Players { get; set; } [XmlElement(“Command”)] public Command Update { get; set; } } 和 [XmlRoot(“Player”)] public class Player { public Player() {} public Player(PlayerColors color) { Color = […]

在XDocument中递归查找节点

我想我忽略了一些简单的东西,但是我很难递归地从XDocument中提取节点。 我有类似这样的XML: 我以为我可以使用所有三个观察节点 foreach (XElement element in Content.Descendants(“observation”)) ExamineObservation(element); 虽然看起来这只适用于观察没有孩子的情况。 我也试过.Ancestors和.DecentantNodes,但没有得到我想要的。 我可以很容易地编写一个递归方法来获取我需要的东西,但是如果有的话,我宁愿使用现有的方法,特别是因为我将在几个项目中使用XML。 我错过了一些明显的东西吗 请注意,任何说观察的节点,我都需要从中获取代码和值,因此在下面的示例中我将需要处理三个观察节点。 观察节点的嵌套和数量是任意的。 谢谢你的帮助。 附录 在我看来,我可能没有提供有关XML的足够信息。 我不认为标签会有所作为,但我想我应该包括它们以防万一。 下面是我试图解析的实际消息的前几行。 为了隐私,我确实用“…”替换了一些文本。 update

为什么var推断类型对象而不是XmlNodeList循环中的XmlNode?

如果像这样循环遍历XmlNodeList foreach (XmlNode foo in xmlNodeList) {string baa = foo.Attributes[“baa”].Value;} 一切都按预期工作 – foo显然是XmlNode类型,VS.NET IDE显示方法和字段。 另一方面 foreach (var foo in xmlNodeList) { string baa = foo.Attributes[“baa”].Value; } 没有编译因为这里foo是object类型。 类型推断类型的工作,但推断对象 。 显然,XmlNodeList的元素不是一个定义的类型,但是将它们分配给XmlNode而不是var会隐式地执行某些操作(强制转换或取消装箱)。 第一个问题:背后的机制是什么? 第二个(相关)问题:如何找到可以在这种循环中使用的类型? VS.NET IDE有帮助吗?