xml节点的限定名怎么修改

大宇_ 2008-12-23 10:25:52
xml
xml
<Data>
<R name="123" />
......

</Data>

比如<R name="123"/>想把name修改成ID
如果用string 替换的办法就请不用回答了,因为XML并不只是一个name属性
...全文
235 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sprc_lcl 2008-12-23
  • 打赏
  • 举报
回复

string xmlstr = "";
string patternstr = "<R [^>]*>";
MatchCollection mc = Regex.Matches(xmlstr, patternstr);
for (int i = 0; i < mc.Count; i++)
{
string thisrow = mc[i].Value;
xmlstr = xmlstr.Replace(thisrow, "{$thisrowstr}");
thisrow.Replace(" name=\"", "ID=\"");
xmlstr = xmlstr.Replace("{$thisrowstr}", thisrow);
}


如果没有CDATA这种的话可以直接替换" name=\""
大宇_ 2008-12-23
  • 打赏
  • 举报
回复
值里如果包含限定名的字符那replace就有问题的
sprc_lcl 2008-12-23
  • 打赏
  • 举报
回复
直接Repace不就好了,用啥正则啊..
大宇_ 2008-12-23
  • 打赏
  • 举报
回复
谁有这个正则表达式吗替换等号前面的字符
sprc_lcl 2008-12-23
  • 打赏
  • 举报
回复
我就想不出来用" name="换为" ID="有什么不好
大宇_ 2008-12-23
  • 打赏
  • 举报
回复
这个替换就是怕值的数据里有和限定名字符是一样的,超级头痛
大宇_ 2008-12-23
  • 打赏
  • 举报
回复
哦,那比较麻烦了,因为节点里的属性的限定名都要替换,看样只能转换成字符串用正则来替换了
GTX280 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 meng_master 的回复:]
楼上那个移除,那值也会丢失的啊
[/Quote]
先取值,然后给新添加的属性上赋值
大宇_ 2008-12-23
  • 打赏
  • 举报
回复
<Data>
<R name="123" />
......

</Data>

比如 <R name="123"/>想把name修改成ID
因R节点有很多属性,所以不想用outxml转换成字符串来替换
不知道xml有没有修改节点限定名的方法
修改后
<Data>
<R ID="123" />
......

</Data>
sprc_lcl 2008-12-23
  • 打赏
  • 举报
回复
读值
删除
添加
赋值
保存
大宇_ 2008-12-23
  • 打赏
  • 举报
回复
楼上那个移除,那值也会丢失的啊
lovefootball 2008-12-23
  • 打赏
  • 举报
回复
XML不提供修改节点名称的办法
只能先删除再添加
GTX280 2008-12-23
  • 打赏
  • 举报
回复
XmlElement element = 。。。;
element.RemoveAttribute();
element.Attributes.Append();
sprc_lcl 2008-12-23
  • 打赏
  • 举报
回复
因为XML并不只是一个name属性...这句是啥意思?为啥有了这句话就不能用string替换了
XStream组件进行Object与XML互转用法 1.所需求jar包: xstream-1.3.1.jar 2.如果仅进行OBJECT与XML之间互转只需要这一个jar 包及XStream这一个类就可又了 用法说明: 1.OBJECT 转XML //第一步:准备好要进行XML转换的OBJECT对象,并且类里的属性都要有get与Set方法; 如下: Address address1 = new Address("郑州市经三路", "450001"); Address address2 = new Address("西安市雁塔路", "710002"); List addList = new ArrayList(); addList.add(address1); addList.add(address2); Profile profile = new Profile("软件工程师", "13512129933", "备注说明"); Person person = new Person("熔岩", "27", profile, addList); //第二步:创建一个XStream对象 XStream xStream = new XStream(); //第三步:进行转换 String xml = xStream. toXML(person); System.out.println(xml); //输出如下: //你会发明输出的XML节点的类是类的全路径 //如果要解决这一问题就需要进行转换前的装配XStream为此提供一个配置类的方法 alias(“nodeName”,”class”); 其中nodeName 即XML节点称 其中class 即要映射到XML节点上的类 如: xStream.alias("PERSON", Person.class); xStream.alias("PROFILE", Profile.class); xStream.alias("ADDRESS", Address.class); //配置完成输出结果 可以看出person类的name和age属性映射出的节点称与属性称相同,那么XStream也支持对类属性的映射配置方法 : aliasField(“节点称”,”类称”,”属性”) 如下: xStream.aliasField("PROFILE", Person.class, "profile"); xStream.aliasField("ADDLIST", Person.class, "addlist"); xStream.aliasField("Add", Address.class, "add"); xStream.aliasField("Job", Profile.class, "job"); 注:如果没有特殊要求最好不要配置属性节点的映射,否则如果再将生成的XML转换成OBJECT时将会非常麻烦。 //如果我们想实现又下的需求。 //XStream 还提供了装配节点属性的方法, useAttributeFor(“类”, “属性”); 如下: xStream.useAttributeFor(Person.class,”name”); xStream.useAttributeFor(Person.class,”age”); 2.XML转OBJECT XML 转OBJECT 只要调用xStream.fromXML(xml)方法,但同样要进行相关属性及类的映射。

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧