using system;
using system.xml;
namespace xmltest
{
/// <summary>
/// xmltransoform 的摘要说明。
/// </summary>
public class xmltransform
{
public xmltransform()
{
}
public itagcontrol createcontrol(string nsuri,string tag,string innerxml)
{
return new simpletagcontrol(innerxml);
}
public string transform(string xml,string nsuri)
{
system.io.stringreader sr = new system.io.stringreader(xml);
xmltextreader reader = new xmltextreader(sr);
system.io.stringwriter sw = new system.io.stringwriter();
xmltextwriter writer = new xmltextwriter(sw);
writer.formatting=system.xml.formatting.indented;
reader.read();
while(!reader.eof)
{
if(reader.nodetype==xmlnodetype.element&&reader.namespaceuri==nsuri)
{
string localname=reader.localname;
itagcontrol tc=createcontrol(nsuri,reader.localname,reader.readinnerxml());
writer.writeraw(tc.render());
// reader.read(); reader.readinnerxml 已经进行的一次read
}
else
{
if(reader.nodetype==xmlnodetype.element)
{
bool isempty=false;
if(reader.isemptyelement)
{
isempty=true;
}
writer.writestartelement(reader.name);
int count = reader.attributecount;
for(int i=0;i<count;i++)
{
reader.movetoattribute(i);
writer.writeattributestring(reader.name,reader.value);
}
if(isempty)
{
writer.writeendelement();
}
reader.read();
}
else
{
writer.writenode(reader,true);
}
}
}
return sw.tostring();
}
}
}
————————————————-
using system;
using system.xml;
namespace xmltest
{
/// <summary>
/// simpletagcontrol 的摘要说明。
/// </summary>
public class simpletagcontrol: itagcontrol
{
public simpletagcontrol()
{
}
#region itagcontrol 成员
public string render()
{
if(members==null||members.count==0)
return innerxml;
else
{
system.io.stringwriter w=new system.io.stringwriter();
xmltextwriter xw=new xmltextwriter(w);
foreach(object key in members.keys)
{
xw.writestartelement(key.tostring());
xw.writestring(members[key].tostring());
xw.writeendelement();
}
return w.tostring();
}
}
protected string innerxml;
public string innerxml
{
get
{
return innerxml;
}
}
#endregion
/// <input>innerxml</input>
public simpletagcontrol(string innerxml)
{
init(innerxml);
}
private system.collections.sortedlist members;
private void createmember(string key,string value)
{
if(members==null)
{
members=new system.collections.sortedlist();
}
if(members.containskey(key))
{
members.add(key,value);
}
else
{
members[key]=value;
}
}
private void init(string innerxml)
{
this.innerxml=innerxml;
if(innerxml.startswith("<"))
{
system.io.stringreader sr = new system.io.stringreader(innerxml);
xmltextreader reader = new xmltextreader(sr);
while(reader.read())
{
if(reader.nodetype==xmlnodetype.text)
{
return;
}
if(reader.nodetype==xmlnodetype.element)
{
createmember(reader.localname,reader.readinnerxml());
}
}
}
}
}
}
——————————–
[stathread]
static void main(string[] args)
{
class1 c1=new class1();
c1.transform();
console.readline(); }
public void transform()
{
string xml="<a xmlns:bb=\"http://ddd/\" xmlns:b=ss key=\"keyname\"><bb:b a=c><a>aaa</a></bb:b><a as=sdf/><b:c key=\"dd\"><b xmlns=\"http://ddd1/\"><bb:h>hhh</bb:h></b></b:c><d>d1d1d1</d><e>eee</e></a>";
xmltransform st=new xmltransform();
console.writeline(st.transform(xml,@"http://ddd/"));
}
XmlTransform 对xml中的特定名称空间的元素进行填充-.NET教程,XML应用
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » XmlTransform 对xml中的特定名称空间的元素进行填充-.NET教程,XML应用
相关推荐
-      VS2010的aspx文件中的html代码的格式化方法
-      .net 反序题目的详细解答第1/2页
-      asp.net创建html文本文件实例
-      比较完整的 asp.net 学习流程
-      官网 Ext direct包中.NET版的问题
-      C# XML操作 代码大全(读XML,写XML,更新,删除节点,与dataset结合等)第1/2页
-      c# 连接字符串数据库服务器端口号 .net状态服务器端口号
-      asp.net教程:简单的C#图片上传代码或C#文件上传代码
