Tag: xmldocument

C#XmlDocument节点

我正在尝试访问UPS跟踪信息,根据他们的示例,我需要构建一个这样的请求: YOURACCESSLICENSENUMBER YOURUSERID YOURPASSWORD guidlikesubstance Track 1Z9999999999999999 我在使用C#中的1个XmlDocument创建此问题时遇到问题。 当我尝试添加第二个: or the 它会抛出一个错误: System.InvalidOperationException:此文档已有“DocumentElement”节点。 我猜这是因为标准的XmlDocument只有1个根节点。 有任何想法吗? 到目前为止,我的代码是: XmlDocument xmlDoc = new XmlDocument(); XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration(“1.0”, “utf-8”, null); XmlElement rootNode = xmlDoc.CreateElement(“AccessRequest”); rootNode.SetAttribute(“xml:lang”, “en-US”); xmlDoc.InsertBefore(xmlDeclaration, xmlDoc.DocumentElement); xmlDoc.AppendChild(rootNode); XmlElement licenseNode = xmlDoc.CreateElement(“AccessLicenseNumber”); XmlElement userIDNode = xmlDoc.CreateElement(“UserId”); XmlElement passwordNode = xmlDoc.CreateElement(“Password”); XmlText licenseText = xmlDoc.CreateTextNode(“mylicense”); XmlText userIDText = […]

如何使用数字字符实体而不是问号XmlDocument.Save()到encoding =“us-ascii”?

我的目标是在不丢失Unicode字符的情况下获得XML的二进制缓冲区( MemoryStream.ToArray()将在这种情况下产生byte[] )。 我希望XML序列化程序使用数字字符引用来表示在ASCII中无效的任何内容。 到目前为止,我有: using System; using System.IO; using System.Text; using System.Xml; class Program { static void Main(string[] args) { var doc = new XmlDocument(); doc.LoadXml(““∞π””); using (var buf = new MemoryStream()) { using (var writer = new StreamWriter(buf, Encoding.ASCII)) doc.Save(writer); Console.Write(Encoding.ASCII.GetString(buf.ToArray())); } } } 上面的程序产生以下输出: $ ./ConsoleApplication2.exe ???? 我想通了如何告诉XmlDocument.Save()使用encoding=”us-ascii” -by将TextStream.Encoding设置为Encoding.ASCII TextStream.Encoding 。 文档说明The […]

XML文档排序

我已经想出如何在正确的structyre中将节点附加到我的rss文档中。 我现在需要在pubDate顺序中对其进行排序,然后输出到屏幕。 看一下在线的例子,我发现了许多XDocument和Linq的东西,但没有找到XmlDocument。 抓住我的头,是否要废弃我的代码,并在XDocument中根据这里的建议解决这个问题,或者继续使用XMLDocument并找出一种排序方法。 使用XMLDocument我已经完全按照我想要的方式运行代码,只需将我的feed在将其吐出到屏幕时按pubDate顺序排序。 所以我想我会坚持这个时间。 我发现这篇文章http://support.microsoft.com/kb/555060和一个xslt有人发布在Stack Overflow中,但我不知道如何从我的代码中调用“XmlHelperFunctions”。 XSLT是我最简单的选择,还是有更简单的选择? 这是我的代码: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(rssFeed.ToString()); XmlNodeList nl = xmlDoc.SelectNodes(“/rss/channel/item”); foreach (XmlNode xn in nl) { string title = xn[“title”].InnerText; string link = xn[“link”].InnerText; string desc = xn[“description”].InnerText; string auth = xn[“author”].InnerText; string pdate = xn[“pubDate”].InnerText; XmlElement itemnode = xmlDoc.CreateElement(“item”); itemnode.InnerXml = “”; itemnode[“title”].InnerText = […]

使用C#在内存中进行XSLT转换

大家下午好, 我不知道为什么这certificate这么困难,但我必须有其中一天! 我正在尝试在内存中执行XslCompiledTransform XmlDocument(我已从Web服务检索XML并保存到数据库中)对象。 到目前为止,我有以下代码: string xslFile = “C:\\MOJLogViewer\\GetClaimTransformed.xslt”; XslCompiledTransform processor = new XslCompiledTransform(); processor.Load(xslFile); MemoryStream ms = new MemoryStream(); processor.Transform(xdoc.CreateNavigator(), null, ms); ms.Seek(0, SeekOrigin.Begin); StreamReader reader = new StreamReader(ms); XmlDocument transformedDoc = new XmlDocument(); transformedDoc.Load(reader.ReadToEnd()); string output = reader.ReadToEnd(); ms.Close(); 当我尝试运行此代码时,我得到“路径中的非法字符”exception。 该路径不包含任何非法字符,所以我绝对难倒! 我希望你能帮忙。 谢谢

使用XmlDocument在c#中检索值

我正在使用XmlDocument()为我的EpubReader应用程序解析文件,如* .opf * 。 同 这些值在同一个文件中.. 在这里我知道id的值在item的标签中,之后我想知道href元素的值。 我要做的是将itemref标记中的值idref elemnt与标记项中id的元素值进行比较。 在这里我知道id值是W01MB154 。 简单地说,我想知道id的下一个值是href元素,使用XmlDocument(), 如果有人意识到这种情况,请帮帮我。 谢谢,

XMLDocument.Save是一个primefaces操作吗?

无论如何,使用XMLDocument.Save()创建的文件的另一个进程监视可能会遇到一个部分文件? 如果Save()覆盖现有文件会有什么不同吗?

使用XPath解析XML文档

可以说我有以下xml(一个简单的例子) one two 我试图通过使用XmlDocument和XPath解析这个(最终我可以创建行列表)。 例如… XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); foreach(XmlNode row in doc.SelectNodes(“//row”)) { string rowName = row.SelectSingleNode(“//name”).InnerText; } 为什么在我的foreach循环中,rowName总是“一个”? 我希望它在第一次迭代时是“一个”,在第二次迭代时是“两个”。 似乎// name获取文档中的第一个实例,而不是我期望的行中的第一个实例。 毕竟,我在“行”节点上调用该方法。 如果这是“它是如何工作的”那么任何人都可以解释我如何改变它以满足我的需求? 谢谢

XmlDocument.Load Vs XmlDocument.LoadXml

我刚刚遇到使用XmlDocument.LoadXml的问题。 应用程序崩溃,出现以下错误: “根级别的数据无效。第1行,第1位” 在检查XML并发现它没有任何问题后,我搜索了一下,发现了一个使用XmlDocument.Load而不是XmlDocument.LoadXml 。 我已经尝试过,它完美无缺。 我的问题是:两种方法之间有什么区别,哪些可能导致一种工作而另一种方法失败?

在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内容中,而不包括父节点。

在XmlTextReader对象中读取’假’xml文档(xml片段)

[案例]我已经发现了一堆’xml文件’,其中包含有关其中大量文档的元数据。 至少,这就是我的要求。 我收到的’没有根元素的’xml文件’,它们的结构是这样的(我遗漏了一堆元素): [问题]当我尝试读取XmlTextReader对象中的文件时,它无法告诉我没有根元素。 [当前解决方法]当然我可以将文件作为流读取,附加和并将流写入新文件并在XmlTextReader中读取该文件。 这正是我现在正在做的事情,但我不想“篡改”原始数据。 [请求的解决方案]我明白我应该使用XmlTextReader,使用DocumentFragment选项。 但是,这会产生编译时错误: System.Xml.dll中发生了未处理的“System.Xml.XmlException”类型exception 附加信息:部分内容解析不支持XmlNodeType DocumentFragment。 第1行,第1位。 [错误代码] using System.Diagnostics; using System.Xml; namespace XmlExample { class Program { static void Main(string[] args) { string file = @”C:\test.txt”; XmlTextReader tr = new XmlTextReader(file, XmlNodeType.DocumentFragment, null); while(tr.Read()) Debug.WriteLine(“NodeType: {0} NodeName: {1}”, tr.NodeType, tr.Name); } } }