本文转自【孟子E章】http://blog.csdn.net/net_lover/archive/2006/12/18/1447434.aspx
XML的应用越来越广泛了,如Vista、Flex编程都将使用 XML,正确掌握XML的各种操作,对提高编程效率至关重要。下面就是一个综合处理带名称空间的XML的例子。
C#:
string
w3NameSpace
=
"
http://www.w3.org/2000/xmlns/
"
;
System.Xml.XmlDocument doc
=
new
System.Xml.XmlDocument();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
创建根节点
System.Xml.XmlNode root
=
doc.CreateNode(System.Xml.XmlNodeType.Element,
"
w
"
,
"
wordDocument
"
,
"
http://schemas.microsoft.com/office/word/2003/2/wordml
"
);
System.Xml.XmlAttribute xa;
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
v
"
, w3NameSpace);
xa.Value
=
"
urn:schemas-microsoft-com:vml
"
;
root.Attributes.Append(xa);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
为节点添加属性
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
w10
"
, w3NameSpace);
xa.Value
=
"
urn:schemas-microsoft-com:office:word
"
;
root.Attributes.Append(xa);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
SL
"
, w3NameSpace);
xa.Value
=
"
http://schemas.microsoft.com/schemaLibrary/2003/2/core
"
;
root.Attributes.Append(xa);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
aml
"
, w3NameSpace);
xa.Value
=
"
http://schemas.microsoft.com/aml/2001/core
"
;
root.Attributes.Append(xa);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
wx
"
, w3NameSpace);
xa.Value
=
"
http://schemas.microsoft.com/office/word/2003/2/auxHint
"
;
root.Attributes.Append(xa);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
o
"
, w3NameSpace);
xa.Value
=
"
urn:schemas-microsoft-com:office:office
"
;
root.Attributes.Append(xa);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
dt
"
, w3NameSpace);
xa.Value
=
"
uuid:C2F41010-65B3-11d1-A29F-00AA00C14882
"
;
root.Attributes.Append(xa);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
space
"
, w3NameSpace);
xa.Value
=
"
preserve
"
;
root.Attributes.Append(xa);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
为节点增加值
System.Xml.XmlNode body
=
doc.CreateNode(System.Xml.XmlNodeType.Element,
"
v
"
,
"
body
"
,
"
urn:schemas-microsoft-com:vml
"
);
System.Xml.XmlNode childNode
=
doc.CreateNode(System.Xml.XmlNodeType.Element,
"
o
"
,
"
t
"
,
"
urn:schemas-microsoft-com:office:office
"
);
childNode.InnerText
=
"
欢迎光临【孟宪会之精彩世界】
"
;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
添加到内存树中
body.AppendChild(childNode);
root.AppendChild(body);
doc.AppendChild(root);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
添加节点声明
System.Xml.XmlDeclaration xd
=
doc.CreateXmlDeclaration(
"
1.0
"
,
"
UTF-8
"
,
"
yes
"
);
doc.InsertBefore(xd, doc.DocumentElement);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
添加处理指令
System.Xml.XmlProcessingInstruction spi
=
doc.CreateProcessingInstruction(
"
mso-application
"
,
"
progid=
"
Word.Document
""
);
doc.InsertBefore(spi, doc.DocumentElement);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
查询节点
System.Xml.XmlNamespaceManager nsmanager
=
new
System.Xml.XmlNamespaceManager(doc.NameTable);
nsmanager.AddNamespace(
"
w
"
,
"
http://schemas.microsoft.com/office/word/2003/2/wordml
"
);
nsmanager.AddNamespace(
"
v
"
,
"
urn:schemas-microsoft-com:vml
"
);
nsmanager.AddNamespace(
"
o
"
,
"
urn:schemas-microsoft-com:office:office
"
);
System.Xml.XmlNode node
=
doc.SelectSingleNode(
"
w:wordDocument/v:body/o:t
"
, nsmanager);
Response.Write(node.InnerText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
node.InnerText
=
"
欢迎光临【孟宪会之精彩世界】:http://dotnet.aspx.cc/
"
;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
创建CDATA节点
System.Xml.XmlCDataSection xcds
=
doc.CreateCDataSection(
"
<a href='http://dotnet.aspx.cc/'>【孟宪会之精彩世界】</a>
"
);
node.ParentNode.InsertAfter(xcds, node);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Response.Write(xcds.InnerText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
doc.Save(Server.MapPath(
"
test.xml
"
));
VB.NET:
Dim
w3NameSpace
As
String
=
"
http://www.w3.org/2000/xmlns/
"
Dim
doc
As
System.Xml.XmlDocument
=
New
System.Xml.XmlDocument
Dim
root
As
System.Xml.XmlNode
=
doc.CreateNode(System.Xml.XmlNodeType.Element,
"
w
"
,
"
wordDocument
"
,
"
http://schemas.microsoft.com/office/word/2003/2/wordml
"
)
Dim
xa
As
System.Xml.XmlAttribute
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
v
"
, w3NameSpace)
xa.Value
=
"
urn:schemas-microsoft-com:vml
"
root.Attributes.Append(xa)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
w10
"
, w3NameSpace)
xa.Value
=
"
urn:schemas-microsoft-com:office:word
"
root.Attributes.Append(xa)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
SL
"
, w3NameSpace)
xa.Value
=
"
http://schemas.microsoft.com/schemaLibrary/2003/2/core
"
root.Attributes.Append(xa)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
aml
"
, w3NameSpace)
xa.Value
=
"
http://schemas.microsoft.com/aml/2001/core
"
root.Attributes.Append(xa)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
wx
"
, w3NameSpace)
xa.Value
=
"
http://schemas.microsoft.com/office/word/2003/2/auxHint
"
root.Attributes.Append(xa)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
o
"
, w3NameSpace)
xa.Value
=
"
urn:schemas-microsoft-com:office:office
"
root.Attributes.Append(xa)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
dt
"
, w3NameSpace)
xa.Value
=
"
uuid:C2F41010-65B3-11d1-A29F-00AA00C14882
"
root.Attributes.Append(xa)
xa
=
doc.CreateAttribute(
"
xmlns
"
,
"
space
"
, w3NameSpace)
xa.Value
=
"
preserve
"
root.Attributes.Append(xa)
Dim
body
As
System.Xml.XmlNode
=
doc.CreateNode(System.Xml.XmlNodeType.Element,
"
v
"
,
"
body
"
,
"
urn:schemas-microsoft-com:vml
"
)
Dim
childNode
As
System.Xml.XmlNode
=
doc.CreateNode(System.Xml.XmlNodeType.Element,
"
o
"
,
"
t
"
,
"
urn:schemas-microsoft-com:office:office
"
)
childNode.InnerText
=
"
欢迎光临【孟宪会之精彩世界】
"
body.AppendChild(childNode)
root.AppendChild(body)
doc.AppendChild(root)
Dim
xd
As
System.Xml.XmlDeclaration
=
doc.CreateXmlDeclaration(
"
1.0
"
,
"
UTF-8
"
,
"
yes
"
)
doc.InsertBefore(xd, doc.DocumentElement)
Dim
spi
As
System.Xml.XmlProcessingInstruction
=
doc.CreateProcessingInstruction(
"
mso-application
"
,
"
progid=""Word.Document""
"
)
doc.InsertBefore(spi, doc.DocumentElement)
Dim
nsmanager
As
System.Xml.XmlNamespaceManager
=
New
System.Xml.XmlNamespaceManager(doc.NameTable)
nsmanager.AddNamespace(
"
w
"
,
"
http://schemas.microsoft.com/office/word/2003/2/wordml
"
)
nsmanager.AddNamespace(
"
v
"
,
"
urn:schemas-microsoft-com:vml
"
)
nsmanager.AddNamespace(
"
o
"
,
"
urn:schemas-microsoft-com:office:office
"
)
Dim
node
As
System.Xml.XmlNode
=
doc.SelectSingleNode(
"
w:wordDocument/v:body/o:t
"
, nsmanager)
Response.Write(node.InnerText)
node.InnerText
=
"
欢迎光临【孟宪会之精彩世界】:http://dotnet.aspx.cc/
"
Dim
xcds
As
System.Xml.XmlCDataSection
=
doc.CreateCDataSection(
"
<a href='http://dotnet.aspx.cc/'>【孟宪会之精彩世界】</a>
"
)
node.ParentNode.InsertAfter(xcds, node)
Response.Write(xcds.InnerText)
doc.Save(Server.MapPath(
"
test.xml
"
))