Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用新值替换整个XmlElement_C#_Xml_C# 2.0 - Fatal编程技术网

C# 用新值替换整个XmlElement

C# 用新值替换整个XmlElement,c#,xml,c#-2.0,C#,Xml,C# 2.0,我有下面的代码,我在其中学习html,然后阅读所有的img和a链接。请注意,这是C#2.0 stringxml=”“+inputXhtml+”; XmlDocument节点=新的XmlDocument(); LoadXml(xml); foreach(TemplateUtilities.SelectNodes中的xmlement元素(节点“//html:img[@xlink:href]|//html:a[@xlink:href]”) { bool flag=element.LocalName==

我有下面的代码,我在其中学习html,然后阅读所有的
img
a
链接。请注意,这是C#2.0

stringxml=”“+inputXhtml+”;
XmlDocument节点=新的XmlDocument();
LoadXml(xml);
foreach(TemplateUtilities.SelectNodes中的xmlement元素(节点“//html:img[@xlink:href]|//html:a[@xlink:href]”)
{
bool flag=element.LocalName==“img”;
lStrCompLinkText=“”;
XmlAttributeCollection attributes=element.attributes;
XmlAttribute namedItem=(XmlAttribute)attributes.GetNamedItem(“href”,”http://www.w3.org/1999/xlink");
字符串str2=namedItem.Value;
Component currentObject=engine.GetObject(str2)作为组件;
国际单项体育联合会(旗)
{
SetAttribute(“src”,str2);
}
其他的
{
foreach(元素.ChildNodes中的XmlNode)
{
lStrCompLinkText=lStrCompLinkText+xnode.OuterXml;
}   
字符串attr=ComponentBase.ComponentHelper.ComponentLinkAttributes(元素,引擎);
字符串compLink=ComponentBase.ComponentHelper.DisplayPublishedComponentLink(currentObject、LSTRComponentLinkText、attr、engine、package、pageObject);
attributes.removenametem(“href”http://www.tridion.com/ContentManager/5.0");
//这里我想用compLink替换整个元素
}
attributes.removenametem(“href”http://www.w3.org/1999/xlink");
属性。RemoveNamedItem(“类型”http://www.w3.org/1999/xlink");
attributes.removenametem(“title”http://www.w3.org/1999/xlink");
}
现在,我想用新值compLink替换我的元素,并将其添加回输入HTML


请建议

在出现您的评论“//此处我要替换”的地方执行以下操作

从compLink的内容创建一个XML文档(假设它是XML)

使用以下代码从父元素中删除原始元素

XmlNode ndParent = element.ParentNode;
ndParent.RemoveChild( element);
导入新xmlTemp并将其附加到父级

XmlNode ndImport = ndParent.OwnerDocument.ImportNode( xmlTemp.documentElement, true );
ndParent.AppendChild( ndImport.CloneNode( true ) );

我用以下逻辑解决了上述问题:

XmlDocument lObjTCDCodeDom = new XmlDocument();
lObjTCDCodeDom.LoadXml("<TCDCode/>");
lObjTCDCodeDom.DocumentElement.InnerText = compLink;
element.ParentNode.ReplaceChild(node.ImportNode(lObjTCDCodeDom.DocumentElement, true), element);
XmlDocument lobjtcodedom=newxmldocument();
lobjtcodem.LoadXml(“”);
lobjtcodedom.DocumentElement.InnerText=compLink;
element.ParentNode.ReplaceChild(node.ImportNode(lobjtcodedom.DocumentElement,true),element);

然后进一步编写XSLT,检查
并替换它,然后我得到实际更新的xml。

嗨,威廉..谢谢你的回复!!,我得到的“link”是一个未声明的名称空间。第1行,位置2。由于我的compLink变量采用这种格式,请下载一份路线图(PDF),建议!!啊,名称空间,XML中有史以来最糟糕的东西(但那是另一个故事…)。我会尝试将“link”和“tcm”名称空间添加到父文档中。例如,将它们放在创建文档的顶部,并从源文档中获取“url”的值。
XmlNode ndImport = ndParent.OwnerDocument.ImportNode( xmlTemp.documentElement, true );
ndParent.AppendChild( ndImport.CloneNode( true ) );
XmlDocument lObjTCDCodeDom = new XmlDocument();
lObjTCDCodeDom.LoadXml("<TCDCode/>");
lObjTCDCodeDom.DocumentElement.InnerText = compLink;
element.ParentNode.ReplaceChild(node.ImportNode(lObjTCDCodeDom.DocumentElement, true), element);