读书人

怎么解析XML得到lt; -gt;其中注释信息

发布时间: 2012-01-09 21:05:41 作者: rapoo

如何解析XML,得到<!-- -->其中注释信息,100分求解!!!帮顶有分啊!!!
有什么方便有效的方法吗?
不会要查找截字符串吧!

例如:
<root>
<!-- message1 -->
<properties>
<!-- message2 -->
</properties>
</root>
如何得到message1和message2的内容

[解决办法]
学习。。。
[解决办法]
XmlTextReader textReader = new XmlTextReader( "C:\books.xml ");

while (textReader.Read())
{
XmlNodeType nType = textReader.NodeType;
// 节点类型为Comment
if( nType == XmlNodeType.Comment)
{
Console.WriteLine( "Comment: " + textReader.Name.ToString());

}


}

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
[解决办法]
学习来
[解决办法]
已知有一个XML文件(bookstore.xml)如下:
<?xml version= "1.0 " encoding= "gb2312 "?>
<bookstore>
<book genre= "fantasy " ISBN= "2-3631-4 ">
<title> Oberon 's Legacy </title>
<author> Corets, Eva </author>
<price> 5.95 </price>
</book>
</bookstore>

1、往 <bookstore> 节点中插入一个 <book> 节点:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load( "bookstore.xml ");
XmlNode root=xmlDoc.SelectSingleNode( "bookstore ");//查找 <bookstore>
XmlElement xe1=xmlDoc.CreateElement( "book ");//创建一个 <book> 节点
xe1.SetAttribute( "genre ", "李赞红 ");//设置该节点genre属性
xe1.SetAttribute( "ISBN ", "2-3631-4 ");//设置该节点ISBN属性

XmlElement xesub1=xmlDoc.CreateElement( "title ");
xesub1.InnerText= "CS从入门到精通 ";//设置文本节点
xe1.AppendChild(xesub1);//添加到 <book> 节点中
XmlElement xesub2=xmlDoc.CreateElement( "author ");
xesub2.InnerText= "候捷 ";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement( "price ");
xesub3.InnerText= "58.3 ";
xe1.AppendChild(xesub3);

root.AppendChild(xe1);//添加到 <bookstore> 节点中
xmlDoc.Save( "bookstore.xml ");
//===============================================
结果为:
<?xml version= "1.0 " encoding= "gb2312 "?>
<bookstore>
<book genre= "fantasy " ISBN= "2-3631-4 ">
<title> Oberon 's Legacy </title>
<author> Corets, Eva </author>
<price> 5.95 </price>
</book>
<book genre= "李赞红 " ISBN= "2-3631-4 ">
<title> CS从入门到精通 </title>
<author> 候捷 </author>
<price> 58.3 </price>
</book>
</bookstore>

2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点 <author> 的文本修改为“亚胜”。
XmlNodeList nodeList=xmlDoc.SelectSingleNode( "bookstore ").ChildNodes;//获取bookstore节点的所有子节点


foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
if(xe.GetAttribute( "genre ")== "李赞红 ")//如果genre属性值为“李赞红”
{
xe.SetAttribute( "genre ", "update李赞红 ");//则修改该属性为“update李赞红”

XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach(XmlNode xn1 in nls)//遍历
{
XmlElement xe2=(XmlElement)xn1;//转换类型
if(xe2.Name== "author ")//如果找到
{
xe2.InnerText= "亚胜 ";//则修改
break;//找到退出来就可以了
}
}
break;
}
}

xmlDoc.Save( "bookstore.xml ");//保存。
//==================================================
最后结果为:
<?xml version= "1.0 " encoding= "gb2312 "?>
<bookstore>
<book genre= "fantasy " ISBN= "2-3631-4 ">
<title> Oberon 's Legacy </title>
<author> Corets, Eva </author>
<price> 5.95 </price>
</book>
<book genre= "update李赞红 " ISBN= "2-3631-4 ">
<title> CS从入门到精通 </title>
<author> 亚胜 </author>
<price> 58.3 </price>
</book>
</bookstore>

3、删除 <book genre= "fantasy " ISBN= "2-3631-4 "> 节点的genre属性,删除 <book genre= "update李赞红 " ISBN= "2-3631-4 "> 节点。
XmlNodeList xnl=xmlDoc.SelectSingleNode( "bookstore ").ChildNodes;

foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute( "genre ")== "fantasy ")
{
xe.RemoveAttribute( "genre ");//删除genre属性
}
else if(xe.GetAttribute( "genre ")== "update李赞红 ")
{
xe.RemoveAll();//删除该节点的全部内容
}
}
xmlDoc.Save( "bookstore.xml ");
//===========================================
最后结果为:
<?xml version= "1.0 " encoding= "gb2312 "?>
<bookstore>
<book ISBN= "2-3631-4 ">
<title> Oberon 's Legacy </title>
<author> Corets, Eva </author>
<price> 5.95 </price>
</book>
<book>
</book>
</bookstore>

4、显示所有数据。
XmlNode xn=xmlDoc.SelectSingleNode( "bookstore ");

XmlNodeList xnl=xn.ChildNodes;

foreach(XmlNode xnf in xnl)
{
XmlElement xe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute( "genre "));//显示属性值
Console.WriteLine(xe.GetAttribute( "ISBN "));

XmlNodeList xnf1=xe.ChildNodes;
foreach(XmlNode xn2 in xnf1)
{
Console.WriteLine(xn2.InnerText);//显示子节点点文本
}
}

应该可以解决你操作XML文件的全部问题了!!
[解决办法]
学习
[解决办法]
XmlNode.ParentNode.Name
[解决办法]
up
[解决办法]
学习+帮顶
[解决办法]
using System;
using System.Collections.Generic;
using System.Xml;

public class MyClass
{
public static void Main()


{
string str=@ " <root>
<!-- message1 -->
<properties>
<!-- message2 -->
</properties>
</root> ";

XmlDocument xd=new XmlDocument();
xd.LoadXml(str);
XmlNodeReader reader = new XmlNodeReader (xd);
string parentName=String.Empty;
while (reader.Read()) {
//记录父节点
if (reader.NodeType==XmlNodeType.Element){
parentName=reader.Name;
}
else if(reader.NodeType==XmlNodeType.Comment){
Console.WriteLine( "{0}: <!--{1}--> ",parentName,reader.Value);
}
}

Console.Read();
}

=======运行结果
root: <!-- message1 -->
properties: <!-- message2 -->

[解决办法]
哈哈哈!没看清楚你的问题!不过既然是注释信息!注释的作用也就是要屏蔽!不让它显示出来!只是方便大家理解阅读!你读取他做什么啊!!
帮你顶!!没看到C#里面提供了这个方法!!
[解决办法]
来晚了,帮顶以下

读书人网 >C#

热点推荐