能,
C# *** 作XML时,要引入命名空间using SystemXml
获取根节点的方法:
1、知道根节点名称:
XmlNode root = xmlDocSelectSingleNode("根节点名称");
2、不知道根节点名称:
XmlElement root = xmlDocDocumentElement;
xml中node(节点)和element(元素)的区别(还是不太明白)
1、element是一个小范围的定义,必须含有完整信息的结点才能叫做元素。例如:<div>内容</div>,一个元素一定是一个节点,一个节点不一定是一个元素。
2、node是基本对象,attribute,element,text等都是node的子对象。
创建节点
1、CreateElement() 方法
有一个参数,两个参数,三个参数三种重载,参数类型均为string。
一个参数:CreateElement("元素名称")
两个参数:CreateElement("元素名称","元素的命名空间")
三个参数:CreateElement("元素的前缀","元素的名称","元素的命名空间")
2、CreateNode() 方法
三个参数 都为string类型
CreateNode("节点类型","节点名称","节点命名空间")
四个参数 都为string类型
CreateNode("节点类型","节点的前缀","节点名称","节点命名空间")
问题:节点前缀有什么作用?结点命名空间有什么作用?
增加节点:
1、AppendChild() 方法
2、InsertAfter(要插入的节点,参考节点) 方法
3、InsertBefore(要插入的节点,参考节点) 方法
增加节点属性:
SetAttribute("属性名","属性值")方法
删除节点属性:
RemoveAttribute("属性名称")
给节点添加数据:
1、给节点的innerText赋值
例子:XmlElement eName = docCreateElement("name");
eNameInnerText = aaaaa;
2、添加XmlText节点,为其添加值
添加节点元素
将XmlText以子节点的方式添加给节点元素
例子: XmlElement eName = xmlDocCreateElement("name");
XmlText tName = xmlDocCreateTextNode(aaaaa);
eNameAppendChild(tName);
寻找某个节点(寻找name节点):
先找到根节点,找出根节点下的节点列表(XmlNodeList),遍历每个节点。
再找每个节点下的节点列表,进行遍历,指导找到所需要的节点。
<msg>
<name></name>
<content></content>
</msg>
方法:
XmlNode root = xmlDocSelectSingleNode("msg");
XmlNodeList nodeList = rootChildNodes;
foreach (XmlNode node in nodeList)
{
if(nodeName=="name")
{
找到name节点,进行 *** 作
}
}
删除节点
RemoveAll(无参数)
RemoveChild(要移除的节点)
更新节点
1、ReplaceChild(新节点,老节点)
建立一个新节点,替换老节点
2、找到要更新的节点,重新设置其属性和数据
用GridView显示xml文件中的数据
view plaincopy to clipboardprint
DataSet ds = new DataSet();
dsReadXml(ServerMapPath("BooksInfoxml"));
GridView1DataSource = dsTables[0];
GridView1DataBind();
DataSet ds = new DataSet();
dsReadXml(ServerMapPath("BooksInfoxml"));
GridView1DataSource = dsTables[0];
GridView1DataBind();
xml文件
view plaincopy to clipboardprint
<xml version="10" encoding="utf-8">
<bookstore>
<book genre="ee" ISBN="2-3631-4">
<title>三国演义</title>
<author>lfdfd</author>
<price>5595</price>
</book>
<book ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>涨红</author>
<price>583</price>
</book>
<book genre="计算机" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>盖茨</author>
<price>583</price>
</book>
<book genre="计算机" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>盖茨</author>
<price>583</price>
</book>
</bookstore>
<xml version="10" encoding="utf-8">
<bookstore>
<book genre="ee" ISBN="2-3631-4">
<title>三国演义</title>
<author>lfdfd</author>
<price>5595</price>
</book>
<book ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>涨红</author>
<price>583</price>
</book>
<book genre="计算机" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>盖茨</author>
<price>583</price>
</book>
<book genre="计算机" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>盖茨</author>
<price>583</price>
</book>
</bookstore>
显示效果:
删除属性为计算机的节点
view plaincopy to clipboardprint
XmlDocument xmlDoc = new XmlDocument();
xmlDocLoad(ServerMapPath("xml/BooksInfoxml"));
XmlNodeList xnl = xmlDocSelectSingleNode("bookstore")ChildNodes;
foreach (XmlNode xn in xnl)
{
XmlElement xe = (XmlElement)xn;
if (xeGetAttribute("genre") == "计算机")
{
xeRemoveAll();//删除属性=计算机的该节点的全部内容
//xeParentNodeRemoveChild(xe);
}
}
xmlDocSave(ServerMapPath("xml/BooksInfoxml"));
XmlDocument xmlDoc = new XmlDocument();
xmlDocLoad(ServerMapPath("xml/BooksInfoxml"));
XmlNodeList xnl = xmlDocSelectSingleNode("bookstore")ChildNodes;
foreach (XmlNode xn in xnl)
{
XmlElement xe = (XmlElement)xn;
if (xeGetAttribute("genre") == "计算机")
{
xeRemoveAll();//删除属性=计算机的该节点的全部内容
//xeParentNodeRemoveChild(xe);
}
}
xmlDocSave(ServerMapPath("xml/BooksInfoxml"));
xeParentNodeRemoveChild(xe)
寻找到xe节点的父节点,再删除他的子节点。那么此节点(包括节点标记)将不存在。显示中将没有空行
xeRemoveAll()
移除节点内容,但是节点标签还在。显示中有空行
你说的是获取指定id下面的节点的属性值吧!
程序如下,其中equal(“”)双引号中的值为节点的属性值
属性值获取如下:
package saxbuilderibmxmlproperty;
import javaioFile;
import javaioIOException;
import javautilIterator;
import orgdom4jAttribute;
import orgdom4jDocument;
import orgdom4jDocumentException;
import orgdom4jElement;
import orgdom4jioSAXReader;
import orgjdomJDOMException;
import orgjdominputSAXBuilder;
public class XmlProperty {
public Element element;
String path = "D:\\xml\\axml";
public void getElementProperty() {
File file = new File(path);
try {
SAXReader reader = new SAXReader();
Document dc = readerread(file);
Element e = dcgetRootElement();
// 节点值
Element child = (Element) egetQName("COMMAND");
Systemoutprintln(childtoString());
// 一级节点
for (Iterator iterator = eelementIterator(); iteratorhasNext();) {
Element el = (Element) iteratornext();
// 一级节点的属性信息
for (Iterator iterator2 = elattributeIterator(); iterator2
hasNext();) {
Attribute attribute = (Attribute) iterator2next();
if(attributegetName()equals("bodyCategory")){
Systemoutprintln("attributegetName()一级节点的属性信息+"+attributegetName()+attributegetValue());
}else{
Systemoutprintln("attributegetName()一级节点的属性信息+"+attributegetName()+attributegetValue());
}
// 二级节点
for (Iterator iterator3 = elelementIterator(); iterator3
hasNext();) {
Element ele = (Element) iterator3next();
// 二级节点的属性信息
for (Iterator iterator4 = eleattributeIterator(); iterator4
hasNext();) {
Attribute attribute1 = (Attribute) iterator4next();
if(attribute1getName()equals("cmdType")){
Systemoutprintln("attribute1getName()二级节点的属性信息+"+attribute1getName()+"+"+attribute1getValue());
}else{
Systemoutprintln("attribute1getName()二级节点的属性信息+"+attribute1getName()+"+"+attribute1getValue());
}
}
}
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
}
以上就是关于C# 解析XML文件,使用XmlNode["..."]的方式能访问到此节点下的多个同名节点吗全部的内容,包括:C# 解析XML文件,使用XmlNode["..."]的方式能访问到此节点下的多个同名节点吗、java语句如何获取XML文件的节点值、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)