Tag: xml

如何更新特定的XElement?

在这个XML中更新XElement( 更新元素Pen的itemNumber的值 )的最佳方法是什么? Pen 12 Paper 23

将XML转换为JSON到XML时保持json:Array属性

我有一块看起来像的XML Alan http://www.google.com Admin 当我尝试将它序列化为json string json = JsonConvert.SerializeXmlNode(xml); 它忽略了名称空间 { “person”: { “@id”: “1”, “name”: “Alan”, “url”: “http://www.google.com”, “role”: [ “Admin” ] } } 当我将它反序列化回xml XmlDocument xml = JsonConvert.DeserializeXmlNode(json) ,我得到以下内容: Alan http://www.google.com Admin 如何保留json:Array属性?

什么可能导致XML文件填充空字符?

这是一个棘手的问题。 我怀疑它需要一些文件系统的高级知识才能回答。 我有一个针对.NET framework 4.0的WPF应用程序“App1”。 它有一个Settings.settings文件,用于生成标准App1.exe.config文件,其中存储了默认设置。 当用户修改设置时,修改将进入AppData\Roaming\MyCompany\App1\XX0.0\user.config 。 这是所有标准的.NET行为。 但是,有时,我们发现客户机器上的user.config文件不是它应该是的,这会导致应用程序崩溃。 问题看起来像这样: user.config大小与XML填充时的大小相同,但是它只是一堆NUL字符而不是XML。 它的字符0一遍又一遍地重复。 我们没有关于导致此文件修改的内容的信息。 如果我们只是删除user.config ,我们可以在客户的设备上修复该问题,因为公共语言运行时只会生成一个新的。 他们将失去他们对设置所做的更改,但可以再次进行更改。 但是,我在另一个WPF应用程序“App2”中遇到了这个问题,另一个XML文件是info.xml 。 这次是不同的,因为文件是由我自己的代码而不是CLR生成的。 常见的主题是两个都是C#WPF应用程序,都是XML文件,在这两种情况下,我们完全无法在测试中重现问题。 这可能与C#应用程序与XML文件或文件交互的方式有关吗? 我们不仅无法在当前的应用程序中重现该问题,而且我甚至无法通过编写有意产生错误的自定义代码来重现该问题。 我找不到单个XML序列化错误或文件访问错误导致文件填充空值。 那么可能会发生什么? App1通过调用Upgrade()和Save()以及获取和设置属性来访问user.config 。 例如: if (Settings.Default.UpgradeRequired) { Settings.Default.Upgrade(); Settings.Default.UpgradeRequired = false; Settings.Default.Save(); } App2通过序列化和反序列化XML来访问info.xml : public Info Deserialize(string xmlFile) { if (File.Exists(xmlFile) == false) { return null; } XmlSerializer xmlReadSerializer = […]

序列化多个对象

我的序列化代码是这样的.. public class slab { public int lowerlimit {get; set;} public int upperlimit { get; set; } public int percentage { get; set; } } public class Details { static void Main(string[] args) { slab s= new slab(); s.lowerlimit = 0; s.upperlimit = 200000; s.percentage = 0; XmlSerializer serializer = new XmlSerializer(s.GetType()); StreamWriter writer = […]

SelectSingleNode总是返回null?

以这个简化的XML示例为例: Invalid Login 我试图使用SelectSingleNode方法选择’错误’节点,但是使用以下代码它总是返回NULL? XmlNode errorNode = oss.SelectSingleNode(“/message/error”); if (errorNode != null) Console.Writeline(“There is an error”); 从研究我已经做到这与命名空间有关,但我根本无法得到任何工作。 任何建议?

解析XDocument而不必继续指定默认命名空间

我有一些XML数据(类似于下面的示例),我想读取代码中的值。 为什么我被迫指定默认名称空间来访问每个元素? 我原本期望默认命名空间用于所有元素。 有没有更合理的方法来实现我的目标? 示例XML: 00000173 2009-10-28T16:50:01 BX4f+RmNCVCsT5g OK 用于读取我之后的xml元素的代码: XDocument xDoc = XDocument.Load( FileInPath ); XNamespace ns = “http://www.secretsonline.gov.uk/secrets”; XElement MessageCheck = xDoc.Element(ns+ “MessageHeader”).Element(ns+”MessageCheck”); XElement MessageBody = xDoc.Element(“Receipts”);

XmlSerializer和List 具有默认值

我在序列化时观察到一种奇怪的行为,而不是反序列化具有List类型成员的类,该类在构造时填充了默认值。 与基于数组的属性不同, List类型的属性在XmlSerializer的反序列化时不会被清空。 这是我的代码: public class Program { public class Config { public Config() { Test1 = new List() {“A”, “B”}; Test2 = new String[] {“A”, “B”}; } public List Test1 {get;set;} public string[] Test2 {get;set;} } public static void Main() { XmlSerializer xmlSerializer = new XmlSerializer(typeof(Config)); using(Stream s = new MemoryStream()) { xmlSerializer.Serialize(s, new […]

如何使用WinRT打开打包文件

我试图弄清楚如何将一些解析xml文件的.Net代码移植到WinRT。 到目前为止,借助给定的System.Uri无法转换为Windows.Foundation.Uri ,我有以下代码。 不过,在我创建Uri之后,我立即陷入困境: static readonly Uri ResourcesBase = new Uri(@”ms-resource://MyAssembly/”); public override async void Load() { Uri uri = new Uri(ResourcesBase, filePath); // filePath = “Data//world.xml”; XmlLoadSettings settings = new XmlLoadSettings() { ValidateOnParse = false }; XmlDocument xmlDoc = await XmlDocument.LoadFromUriAsync(uri, settings); foreach (IXmlNode xmlNode in xmlDoc.ChildNodes) { ProcessNode(xmlNode); } } 当我尝试调用XmlDocument.LoadFromUriAsyn(uri)时,我得到一个未处理的exception: ArgumentException未被用户代码处理 – […]

WebApi强制操作返回xml

我有这个动作: public IHttpActionResult SearchFor(int aboItemType, DTO.FilterColumns filter) { //Do stuff… return Ok(ds); } 我的客户做了: client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(“application/xml”)); var response = client.PostAsJsonAsync(myurl).Result; if (response.IsSuccessStatusCode) { var results = HttpUtility.HtmlDecode(response.Content.ReadAsStringAsync().Result); } 上述场景完美无缺。 但是,如果我对Accept行进行注释,则该操作将以json格式返回数据集。 我想强制这一个特定的操作总是在xml中发送结果。 这可能吗? 也许有一个属性?

我的XDeclaration在哪里?

由于某种原因,以下代码生成不包含声明的XML: XDocument xDocument = new XDocument(new XDeclaration(“1.0”, “utf-8”, “yes”), new XElement(“project”, new XAttribute(“number”, project.ProjectNumber), new XElement(“store”, new XAttribute(“number”, project.StoreNumber) ), // User Element new XElement(“user”, new XAttribute(“owner-id”, project.OwnerID ?? 0), new XElement(“email”, new XCData(project.OwnerEmail ?? “”)), new XElement(“project-name”, new XCData(project.ProjectName ?? “”)) ), // Nested Project Element new XElement(“nested-project”, new XAttribute(“version”, new Version(1, 0)), new […]