最近在学习C# XML格式遇到一点问题,希望大家帮帮我,感激不尽 xmlencodingc# 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用什么方式操作xml才是最重要的。参见:http://blog.csdn.net/duanzi_peng/article/details/24018431 用linq to xml XDocument xml1 = XDocument.Load("C:\\1.xml"); XDocument xml2 = XDocument.Load("C:\\2.xml"); XElement root = xml2.Element("Program").Element("Pages").Element("Page").Element("Windows"); var textWindowAttr = root.Element("TextWindow").Attributes(); var multiLineTextAttr = root.Element("TextWindow").Element("MultiLineText").Attributes(); var textAttr = root.Element("TextWindow").Element("MultiLineText").Element("Text").Attributes(); var pages = xml1.Element("RESPONSE").Elements().Where(x => x.Name.LocalName.StartsWith("PAGE", true, null)); foreach (var v in pages) { XElement textWindow = new XElement("TextWindow"); foreach (var a1 in textWindowAttr) { textWindow.SetAttributeValue(a1.Name.LocalName, a1.Value); } XElement multiLineText = new XElement("MultiLineText"); foreach (var a1 in multiLineTextAttr) { multiLineText.SetAttributeValue(a1.Name.LocalName, a1.Value); } XElement text = new XElement("Text"); foreach (var a1 in textAttr) { text.SetAttributeValue(a1.Name.LocalName, a1.Value); } text.SetAttributeValue("Text", v.Element("DATA").Value); multiLineText.Add(text); textWindow.Add(multiLineText); root.Add(textWindow); } xml2.Save("C:\\2.xml"); XmlDocument xmlTemp = new XmlDocument(); xmlTemp.Load(CatchFile); XmlNode rootNode = xmlTemp.SelectSingleNode("catch"); XmlNode node = xmlTemp.CreateElement("time"); node.Attributes.Append(CreateAttribute(node, "name", deveceNo)); node.Attributes.Append(CreateAttribute(node, "loadtime", uploadtime)); rootNode.AppendChild(node); for (int i=rootNode.ChildNodes.Count-1;i>=0;i--) { XmlElement elem = rootNode.ChildNodes[i] as XmlElement; if(DateTime.Now.AddMinutes(-1)>=DateTime.Parse(elem.GetAttribute("loadtime"))) { rootNode.RemoveChild(rootNode.ChildNodes[i]); } } xmlTemp.Save(CatchFile);创建节点和节点属性 真是高手,谢谢!解决了我的问题 ,不过 我还有一个问题。就是这个textwindow开始是一个都不存在的,是我在遍历Page之后才导入的格式,也可以理解为第3个XML追加到windows,按照您这样的实现方式的话,会多出来一个textwindow 这样数据格式不满足的要求,希望您再看看 这个该怎么实现。感激不尽 我自己也在看您的代码 需要消化 那就这样,节点属性自己加一下 XDocument xml1 = XDocument.Load("C:\\1.xml"); XDocument xml2 = XDocument.Load("C:\\2.xml"); XElement root = xml2.Element("Program").Element("Pages").Element("Page").Element("Windows"); var pages = xml1.Element("RESPONSE").Elements().Where(x => x.Name.LocalName.StartsWith("PAGE", true, null)); foreach (var v in pages) { root.Add(new XElement("TextWindow", new XElement("MultiLineText", new XElement("Text", new XAttribute("Text",v.Element("DATA").Value))))); } xml2.Save("C:\\2.xml"); 怎么样截取字符串??? 这是什么情况?不会是我电脑的事吧? foreach循环表格列 表格宽度超出页面时,出现左右滚动条 如何在使用ajax的时候,读取客户端的一些设置? 我对ASPNET程序设置虚拟目录后,IIS中浏览出现以下错误? wp7探讨 谁会做类型与qq退出的效果如图求高人 服务器控件的问题,调用子控件时子控件未初始化 请教关于模板页的问题 一个小问题,但我无法解决 问题 CKEditor ASP.NET 怎么配置菜单 我使用了NPOI组件产生excel文件,但是如果数据超过了65536怎么办?怎么把数据再写入到另一个sheet?
参见:http://blog.csdn.net/duanzi_peng/article/details/24018431
XDocument xml2 = XDocument.Load("C:\\2.xml");
XElement root = xml2.Element("Program").Element("Pages").Element("Page").Element("Windows");
var textWindowAttr = root.Element("TextWindow").Attributes();
var multiLineTextAttr = root.Element("TextWindow").Element("MultiLineText").Attributes();
var textAttr = root.Element("TextWindow").Element("MultiLineText").Element("Text").Attributes();
var pages = xml1.Element("RESPONSE").Elements().Where(x => x.Name.LocalName.StartsWith("PAGE", true, null));
foreach (var v in pages)
{
XElement textWindow = new XElement("TextWindow");
foreach (var a1 in textWindowAttr)
{
textWindow.SetAttributeValue(a1.Name.LocalName, a1.Value);
}
XElement multiLineText = new XElement("MultiLineText");
foreach (var a1 in multiLineTextAttr)
{
multiLineText.SetAttributeValue(a1.Name.LocalName, a1.Value);
}
XElement text = new XElement("Text");
foreach (var a1 in textAttr)
{
text.SetAttributeValue(a1.Name.LocalName, a1.Value);
}
text.SetAttributeValue("Text", v.Element("DATA").Value);
multiLineText.Add(text);
textWindow.Add(multiLineText);
root.Add(textWindow);
}
xml2.Save("C:\\2.xml");
xmlTemp.Load(CatchFile);
XmlNode rootNode = xmlTemp.SelectSingleNode("catch");
XmlNode node = xmlTemp.CreateElement("time");
node.Attributes.Append(CreateAttribute(node, "name", deveceNo));
node.Attributes.Append(CreateAttribute(node, "loadtime", uploadtime));
rootNode.AppendChild(node);
for (int i=rootNode.ChildNodes.Count-1;i>=0;i--)
{
XmlElement elem = rootNode.ChildNodes[i] as XmlElement;
if(DateTime.Now.AddMinutes(-1)>=DateTime.Parse(elem.GetAttribute("loadtime")))
{
rootNode.RemoveChild(rootNode.ChildNodes[i]);
}
}
xmlTemp.Save(CatchFile);创建节点和节点属性
真是高手,谢谢!解决了我的问题 ,不过 我还有一个问题。就是这个textwindow开始是一个都不存在的,是我在遍历Page之后才导入的格式,也可以理解为第3个XML追加到windows,按照您这样的实现方式的话,会多出来一个textwindow 这样数据格式不满足的要求,希望您再看看 这个该怎么实现。感激不尽 我自己也在看您的代码 需要消化
XDocument xml2 = XDocument.Load("C:\\2.xml");
XElement root = xml2.Element("Program").Element("Pages").Element("Page").Element("Windows");
var pages = xml1.Element("RESPONSE").Elements().Where(x => x.Name.LocalName.StartsWith("PAGE", true, null));
foreach (var v in pages)
{
root.Add(new XElement("TextWindow",
new XElement("MultiLineText",
new XElement("Text",
new XAttribute("Text",v.Element("DATA").Value)))));
}
xml2.Save("C:\\2.xml");