我编写了一个控制台应用程序来从Web服务器获取一些信息,将其转换为XML并保存。我手动创建了XML(使用StringBuilder附加字符串)。由于XML可能非常大,就内存而言,使用StringBuilder或XMLDocument类等更好吗?准确地说,我的问题是,如果XML类似于10mb文本,使用StringBuilder.append("")或System.XML命名空间是否具有内存效率?我认为更有效的方法是使用StringBuilder,但在每次迭代后将XML保存到HD上的文件并清除stringbuilder对象。任何意见?提前致谢。:) 最佳答案
我正在努力处理一个合理的逻辑循环,以便从一个太大而无法与支持.NET类的XPath一起使用的XML文件中剥离节点。我正在尝试用执行相同但使用XmTextReader的代码替换我拥有的单行代码(使用XPath查询字符串调用SelectNodes)。如之前使用的XPath查询(仅供引用)所示,我必须向下几个级别:ConfigurationRelease/Profiles/Profile[Name='MyProfileName']/Screens/Screen[Id='MyScreenId']/Settings/Setting[Name='MySettingName']我认为这会很烦人但很简
标题说明了一切......在使用System.Xml.XmlDocument时是否可以从System.Xml.XmlNode获取行号/位置?我需要这些信息,以便我可以通知用户他们需要在Xml文件中的何处查找特定信息。我在SO上看到过与XmlReader相关的类似问题,但没有任何内容能真正回答我的问题。我想我可以在xml文件中搜索我感兴趣的节点的OuterXml,但这似乎很麻烦,如果该信息多次出现在文件中怎么办?一定有更好的方法吗?更新:我正在使用以下方法加载我的xml文件:xmlDoc=newXmlDocument();xmlDoc.PreserveWhitespace=true;xm
大家好,我在需要加载xml时遇到问题我的代码是这样的Stream.Seek(0,SeekOrigin.Begin);xmlDoc.Load(Stream);//-->throwXmlException(multiplerootelementsin14,22)xmlDoc.PreserveWhitespace=true;xml文件是Uniquemyuser2015-09-07T12:21:152015-09-08T12:21:15isacolumn22--->X1tag是文件的根,为什么会发送此错误以及如何读取我的文件?我发现了一些有趣的东西当我保存文件时,而不是将其保存在Stream中
我的应用程序使用XmlDocument生成XML。部分数据包含换行符和回车符。像这样将文本分配给XmlElement时:e.InnerText="Hello\nThere";生成的XML如下所示:HelloThereXML的接收者(我无法控制)将换行符视为空白并将上述文本视为:"HelloThere"为了让接收者保留换行符,它需要编码为:Hello
There如果数据应用于XmlAttribute,则换行符已正确编码。我已尝试使用InnerText和InnerXml将文本应用于XmlElement,但两者的输出相同。有没有办法让XmlElement文本节点以其编码形式输出换行符
使用visualStudio2012,创建一个可移植类库项目,我想使用XmlDocument类(class)。但是,即使使用也找不到该库usingSystem.Xml;错误信息是:"areyoumissingausingdirectiveoranassemblyreference"如果我右键单击“引用”->“添加引用”,浏览到dll目录(地址如下),然后选择以下dll:C:\ProgramFiles(x86)\ReferenceAssemblies\Microsoft\Framework\.NETFramework\v4.5\System.XML.dll然后点击确定,出现错误"Aref
我创建了一个C#Web窗体应用程序,我想从特定对象获取索引。这就是我现在所拥有的。在这个练习中,我想输入登录名和密码,以便从那个特定的人那里获取信息。允许重复的名称/密码。我能想到的是从节点获取索引,然后使用XmlNodeListinfo=reader.GetElementsByTagName("Info");和textBox1.Text=root.GetElementsByTagName("Info")[index].InnerText;我需要找到那个特定的索引,但我对此感到有点困惑。希望有人能给我任何建议,以及如何做的新想法,谢谢!privateintGetIndex(string
我有一个WCF服务,它接受一个字符串作为其操作契约(Contract)之一的参数。但是,此字符串中包含xml内容。我需要将其转换为标记为DataContract但不向外界公开的类。我需要使用DataContractSerializer,因为类成员的[DataMember]属性设置为不同的名称。例如:属性Phone的DataMemberName设置为"Telephone",因此当我使用普通序列化程序反序列化xmldocument时,我在反序列化程序查找Phone元素不存在。如何使用DataContractSerializer反序列化XmlDocument?不过,一个限制是我无法将xmld
所以我需要打开一个XML文档,写入它,然后将文件保存回磁盘。我是否需要使用文件流加载XmlDocument以确保在保存之前关闭该流?stringxmlPath=Server.MapPath("../statedata.xml");XmlDocumentxmlDocument=newXmlDocument();xmlDocument.Load(xmlPath);XmlNodenode=xmlDocument.SelectSingleNode("//root/state");node.InnerText=string.Format("org.myorg.application.init={
我有以下代码,用于遍历XML:privatevoidbtn_readXML_Click(objectsender,EventArgse){vardoc=newXmlDocument();doc.Load("e:\\contacts.xml");//Loadxmldocument.TraverseNodes(doc.ChildNodes);}staticListxmlnodes=newList();privatestaticvoidTraverseNodes(XmlNodeListnodes){foreach(XmlNodenodeinnodes){Listtemp=newList();