Tag: xml

使用XPath /应用XSL转换遍历任意C#对象图

我一直在寻找一个允许我将任意C#对象传递给XSL转换的组件。 这样做的天真方法是使用XmlSerializer序列化对象图; 但是,如果你有一个大的对象图,就性能而言,这可能会导致问题。 诸如循环引用,延迟加载,代理等问题可能会使这里的水域更加混乱。 更好的方法是使用某种实现IXPathNavigable和XPathNavigator的Adapter类。 我遇到的一个这样的例子是来自Byte-Force的ObjectXPathNavigator – 但是,它的大部分关键文档都是俄语的,我的初步测试似乎表明它有一些怪癖和特质。 有没有人知道(a)关于这个特定英语的任何资源(概述,教程,博客文章等)或(b)提供相同或类似function的任何其他替代方案?

使用Linq和XDocument,我可以获取父标记下的所有子元素吗?

我有一个XML 使用Linq和XDocument,我可以提取“摘要”信息,但如何在“摘要”标签下提取“帐户”信息? XDocument XMLDoc = XDocument.Load(“testdata.xml”); XElement accounts = (from xml2 in XMLDoc.Descendants(“summary”) select xml2).FirstOrDefault(); 如何指定“ summary/account ”之类的内容,以便它返回 下的所有元素? 请注意,我在 下有 ,我只想要摘要标记下的元素。 编辑:(安德鲁的解决方案) var accounts = XMLDoc.Root.Elements(“summary”).Elements(“account”); foreach (XElement elem in accounts) { sb.Append(elem.ToString()); }

LINQ to XML:应用XPath

有人能告诉我为什么这个程序不会枚举任何项目? 它与RDF名称空间有关吗? using System; using System.Xml.Linq; using System.Xml.XPath; class Program { static void Main(string[] args) { var doc = XDocument.Load(“http://seattle.craigslist.org/sof/index.rss”); foreach (var item in doc.XPathSelectElements(“//item”)) { Console.WriteLine(item.Element(“link”).Value); } Console.Read(); } }

在C#中解析XML字符串

我已经查看了同一主题的其他post并搜索了Google,但我对C#NET非常陌生并且不知所措。 我试图解析这个XML … getstaffonline success 1 Admin 2010-03-03 18:29:12 127.0.0.1 2010-03-03 18:30:43 使用此代码.. XDocument doc = XDocument.Parse(strResponse); var StaffMembers = doc.Descendants(“staff”).Select(staff => new { Name = staff.Element(“adminusername”).Value, LoginTime = staff.Element(“logintime”).Value, IPAddress = staff.Element(“ipaddress”).Value, LastVisit = staff.Element(“lastvisit”).Value, }).ToList(); label1.Text = doc.Element(“totalresults”).Value; foreach (var staff in StaffMembers) { listBox1.Items.Add(staff.Name); } 我打印出strResponse的内容,XML肯定在那里。 但是,当我单击此按钮时,没有任何内容添加到listBox1或label1所以我有些错误。

如果2个XDocuments等于忽略元素/属性顺序,是否有一种简单的方法来比较?

unit testing我的序列化代码我发现一个失败,因为我有一个不同的顺序列出的属性(我只是比较XDocument.ToString()值)虽然我可以修复它,它对我来说无关紧要的顺序只要元素或属性在正确的层次结构中具有正确的名称,它们就会出现。 我可能会写一个方法来做这个,但我想知道是否有一个简单的内置方式我不知道。

如何将XML转换为Dictionary

我的xml如下: Log In Password 我没有Linq就成功了,任何人都可以帮我将以下代码转换为Linq: using (XmlReader reader = XmlReader.Create(_xml)) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.LocalName == “data”) { reader.MoveToAttribute(“name”); string key = reader.Value; reader.MoveToContent(); string value = reader.ReadElementContentAsString(); _dictionary.Add(key, value); } } reader.Close(); }

使用XML文件在C#中存储数据

我基本上都在寻找有人指出我正确的方向。 我阅读了一些Microsoft文档,但这不是很有帮助。 这是我第一次尝试使用XML。 我正在编写一个需要存储已知用户列表的应用程序以及每个用户创建的别名列表。 我已经弄清楚如何在应用程序关闭时将我的列表序列化并存储到XML文件中,并让它在应用程序再次打开时检索它们,但我不想将用户和别名列表保留在内存中。 为了实现这一点,我需要能够在运行时搜索,编辑和附加到XML文件。 我设想的XML结构是这样的: Username-1 Alias-1 6135551234 Alias-2 6131238888 每个用户只有一个用户名,但可能有多个别名。 我需要能够添加用户,向新用户或现有用户添加别名并更改现有别名。 用户名永远不会改变,可以删除整个用户记录。 到目前为止,我在C#中使用的唯一XML使用了序列化,但我不认为这种方法适用于上述方法。 private void WriteXML() { try { System.Xml.Serialization.XmlSerializer XMLwriter = new System.Xml.Serialization.XmlSerializer(typeof(MessageRecord)); System.IO.StreamWriter XMLfile = new System.IO.StreamWriter(“Saved MessageRecords.xml”); foreach (MessageRecord mr in OutgoingMessages) { XMLwriter.Serialize(XMLfile, mr); } XMLfile.Close(); } catch (Exception e) { MessageBox.Show(e.Message); } }

C# – 解析XSD架构 – 获取combobox的所有元素

我有XSD Schema文件,我需要用模式文件中的元素填充我的combobox… 有人知道怎么做吗? 通过xpath? 我有半个工作代码…我收到了一个带元素自动的消息。 String path = openSchema.FileName; XmlTextReader xsd_file = new XmlTextReader(path); XmlSchema schema = new XmlSchema(); schema = XmlSchema.Read(xsd_file, null); MessageBox.Show(schema.Items.Count.ToString()); foreach (XmlSchemaElement element in schema.Items) { elements.Items.Add(element.Name); MessageBox.Show(element.Name); } 非常感谢你!

如何使用c#.net CF 3.5中的XmlDocument向xml添加属性

我需要为元素“aaa”创建一个带有前缀“xx”的属性“abc”。 以下代码添加了前缀,但它还将namespaceUri添加到元素中。 要求输出: 我的代码: XmlNode node = doc.SelectSingleNode(“//mybody”); XmlElement ele = doc.CreateElement(“aaa”); XmlAttribute newAttribute = doc.CreateAttribute(“xx”,”abc”,namespace); newAttribute.Value = “ddd”; ele.Attributes.Append(newAttribute); node.InsertBefore(ele, node.LastChild); 上面的代码生成: 期望的输出是 并且“xx”属性的声明应该在根节点中完成,如: 如何以deisred格式获取输出? 如果xml不是这种所需的格式,那么它就不能再被处理了.. 有人可以帮忙吗? 谢谢,Vicky

LINQ to XML:如何选择下一个元素

我有一个iPhone应用程序的plist文件。 它如下所示: barcodes JF893J89FJ-66666 JF893J89FJ-55555 currentStep 1 dateFinished 2010-05-10T18:33:25Z dateStarted 2010-05-10T18:33:25Z description TEST geoRequired N inProgress N jobID 10085 jobSteps label TEST response matt hudson stepID 1103 typeID 4 我需要在jobSteps之后获取数组。 到目前为止我有这个: XDocument xml = XDocument.Load(rri.Response); var q = from elements in xml.Descendants(“plist”).Descendants(“dict”) where elements.Value == “jobSteps” select elements; 但我需要在其中包含jobSteps的元素之后获取下一个项目。