C# 处理 XML,求助!

FatProgrammer 2010-10-22 09:55:30

XmlDocument doc = new XmlDocument();
XmlDeclaration xmlDecl = doc.CreateXmlDeclaration("1.0", "", "");
doc.AppendChild(xmlDecl);

XmlElement xeRoot = doc.CreateElement("mets",":mets");
xeRoot.Prefix = "METS";

XmlAttribute xa = doc.CreateAttribute("xsi:schemaLocation", "xsi");
xa.Value = "http://www.loc.gov/METS/ http://www.loc.gov/standards/mets/mets.xsd";
xa.Prefix = "xsi";
xeRoot.Attributes.Append(xa);

doc.AppendChild(xeRoot);

doc.Save(xmlpath);

但是出来的结果却有问题。

<?xml version="1.0"?>
<METS:mets
d1p1:schemaLocation = "http://www.loc.gov/METS/&#xA;http://www.loc.gov/standards/mets/mets.xsd"
xmlns:d1p1 = "xsi"/>


属性名:xsi:schemaLocation 却变成了:d1p1:schemaLocation,而且多了一个:xmlns:d1p1 = "xsi"。

请高人指点一二。
感激不尽。
...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
FatProgrammer 2010-10-26
  • 打赏
  • 举报
回复
谢谢楼上那位大哥,谢谢。
机器人 2010-10-22
  • 打赏
  • 举报
回复
如果指定prefix的话,namespaceURI必须是http://www.w3.org/2000/xmlns


XmlDocument doc = new XmlDocument();

string ns = doc.NamespaceURI;

XmlDeclaration xmlDecl = doc.CreateXmlDeclaration("1.0", "", "");
doc.AppendChild(xmlDecl);

XmlElement xeRoot = doc.CreateElement("mets", ":mets");
xeRoot.Prefix = "METS";

XmlAttribute xa = doc.CreateAttribute("schemaLocation", "http://www.w3.org/2000/xmlns");
xa.Value = @"http://www.loc.gov/METS/ http://www.loc.gov/standards/mets/mets.xsd";
xa.Prefix = "xsi";

xeRoot.Attributes.Append(xa);

doc.AppendChild(xeRoot);
Jellyfancy 2010-10-22
  • 打赏
  • 举报
回复
已验证,没问题
最后一句我给改成doc.save("xmlpath.xml")
wuyq11 2010-10-22
  • 打赏
  • 举报
回复
<?xml version="1.0"?>
<METS:mets
xsi:schemaLocation = "http://www.loc.gov/METS/&#xA;http://www.loc.gov/standards/mets/mets.xsd"
xmlns:METS= ":mets"/>
没问题

111,129

社区成员

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

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

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