Tag: xml

使用C#更改XML文件中的节点名称

我有一大堆XML文件,具有以下结构: someContent someType someContent someType someContent someType … … 我需要将每个“内容”节点名称更改为StuffxContent; 基本上将父节点名称添加到内容节点的名称。 我打算使用XMLDocument类并找出一种方法,但我想我会问是否有更好的方法来做到这一点。

如何使用C#从XmlTextWriter中删除BOM?

如何从正在创建的XML文件中删除BOM? 我尝试过使用新的UTF8Encoding(false)方法,但它不起作用。 这是我的代码: XmlDocument xmlDoc = new XmlDocument(); XmlTextWriter xmlWriter = new XmlTextWriter(filename, new UTF8Encoding(false)); xmlWriter.Formatting = Formatting.Indented; xmlWriter.WriteProcessingInstruction(“xml”, “version=’1.0′ encoding=’UTF-8′”); xmlWriter.WriteStartElement(“items”); xmlWriter.Close(); xmlDoc.Load(filename); XmlNode root = xmlDoc.DocumentElement; XmlElement item = xmlDoc.CreateElement(“item”); root.AppendChild(item); XmlElement itemCategory = xmlDoc.CreateElement(“category”); XmlText itemCategoryText = xmlDoc.CreateTextNode(“test”); item.AppendChild(itemCategory); itemCategory.AppendChild(itemCategoryText); xmlDoc.Save(filename);

如何获取字符串中的xml节点值

我尝试了下面的代码来获取特定节点的值,但是在加载xml时抛出了这个exception: 例外: 根级别的数据无效。 第1行,第1位。 XML 11-07-2013 PM 01:37:11 PM 01:37:14 00:00:03 00:00:03 08:29:57 00:00:00 C#: XmlDocument xml = new XmlDocument(); filePath = @”D:\Work_Time_Calculator\10-07-2013.xml”; xml.LoadXml(filePath); // Exception occurs here XmlNode node = xml.SelectSingleNode(“/Data[@*]/Short_Fall”); string id = node[“Short_Fall”].InnerText; 修改代码 C#: XmlDocument xml = new XmlDocument(); filePath = @”D:\Work_Time_Calculator\10-07-2013.xml”; xml.Load(filePath); XmlNode node = xml.SelectSingleNode(“/Data[@*]/Short_Fall”); string id = node[“Short_Fall”].InnerText; […]

System.Version未序列化

我有一个带有System.Version属性的类,如下所示: 版 建立:111 专业:1 MajorRevision:0 轻微:1 MinorRevision:10 修订版:10 当我序列化类时,版本始终为空: Client类看起来像: [Serializable] public class Client { public string Description; public string Directory; public DateTime ReleaseDate; public Version Version; }

validationxml节点,而不是整个文档

我正在使用一些xml’片段’,它们在xml中形成元素。 我有架构,但我无法validation这些文件,因为它们不是完整的xml文档。 这些片段用必要的父元素包装,以便在其他工具中使用时形成有效的xml,因此我没有太多选择将它们变为有效的xml或更改模式。 是否可以validation元素,而不是整个文档? 如果没有,可以提出哪些变通方法? 我正在使用.NET 2.0框架在C#中工作。

C#数组XML序列化

我发现C#的XML序列化存在问题。 串行器的输出在正常的Win32和WinCE之间不一致(但令人惊讶的是WinCE具有IMO校正器输出)。 Win32只是忽略Class2 XmlRoot(“c2”)属性。 有没有人知道如何在Win32上获得类似WinCE的输出(因为我不希望XML标签具有序列化类的类名)。 测试代码: using System; using System.Xml.Serialization; using System.IO; namespace ConsoleTest { [Serializable] [XmlRoot(“c1”)] public class Class1 { [XmlArray(“items”)] public Class2[] Items; } [Serializable] [XmlRoot(“c2”)] public class Class2 { [XmlAttribute(“name”)] public string Name; } class SerTest { public void Execute() { XmlSerializer ser = new XmlSerializer(typeof (Class1)); Class1 test = new Class1 […]

使用特殊字符快速反序列化XML的方法

我正在寻找快速反序列化xml的方法,它有像ö那样的特殊字符。 我正在使用XMLReader,它无法反序列化这些字符。 有什么建议吗? 编辑:我正在使用C#。 代码如下: XElement element =.. //has the xml XmlSerializer serializer = new XmlSerializer(typeof(MyType)); XmlReader reader = element.CreateReader(); Object o= serializer.Deserialize(reader);

将XML字符串注入XmlWriter时的XML缩进

我有一个XmlTextWriter使用该文本编写器写入文件和XmlWriter。 此文本编写器设置为输出制表符缩进的XML: XmlTextWriter xtw = new XmlTextWriter(“foo.xml”, Encoding.UTF8); xtw.Formatting = Formatting.Indented; xtw.IndentChar = ‘\t’; xtw.Indentation = 1; XmlWriter xw = XmlWriter.Create(xtw); 根据Jeff的MSDN链接更改: XmlWriterSettings set = new XmlWriterSettings(); set.Indent = true; set.IndentChars = “\t”; set.Encoding = Encoding.UTF8; xw = XmlWriter.Create(f, set); 这不会改变最终结果。 现在我在我的XmlWriter中是一个任意深度,我从其他地方(我无法控制)得到一串XML,这是一个单行,非缩进的XML。 如果我调用xw.WriteRaw(),那么该字符串是逐字注入的,并不遵循我想要的缩进。 … string xml = ExternalMethod(); xw.WriteRaw(xml); … 本质上,我想要一个WriteRaw,它将解析XML字符串并遍历所有WriteStartElement等,以便根据XmlTextWriter的设置重新格式化。 我的偏好是使用我已经拥有的设置执行此操作的方法,并且无需重新加载最终XML以重新格式化它。 我也不想用XmlReader等解析XML字符串,然后模仿它在我的XmlWriter中找到的东西(非常非常手动的过程)。 在结束时,我宁愿有一个简单的解决方案,而不是遵循我的偏好。 (当然,最好的解决方案很简单,并且符合我的偏好。)

检查XML元素是否存在

有人如何validationXML文件中是否存在特定元素? 假设我有一个不断变化的XML文件,我需要在读取/解析它之前validation每个元素是否存在。

C#中XMLwriter的缩进和换行命令

我正在将一些数据写入XML文件…但是当我打开它时,所有的值都在一行中…如何以可读格式编写它?即新行和缩进中的每个节点? FileStream fs = new FileStream(“myfile.xml”, FileMode.Create); XmlWriter w = XmlWriter.Create(fs); w.WriteStartDocument(); w.WriteStartElement(“myfile”); w.WriteElementString(“id”, id.Text); w.WriteElementString(“date”, dateTimePicker1.Text); w.WriteElementString(“version”, ver.Text); w.WriteEndElement(); w.WriteEndDocument(); w.Flush(); fs.Close();