XML DOM 添加节点appendChild()方法向已存在的节点添加子节点,新节点会添加(追加)到任何已存在的子节点之后。
但是我现在想让新添加的子节点在已存在的子节点之前,但是也没有这样的方法,我该如何实现。例如京东的拍卖功能:http://auction.360buy.com/PaiMai.aspx?Pid=2056038&wid=250299
他是如何实现的?
但是我现在想让新添加的子节点在已存在的子节点之前,但是也没有这样的方法,我该如何实现。例如京东的拍卖功能:http://auction.360buy.com/PaiMai.aspx?Pid=2056038&wid=250299
他是如何实现的?
解决方案 »
- jquery 查找table tfood 中的a标记
- 怎么接收接受转义字符?
- 200分,求一解决asp升级到asp.net的最快的方法,不改动源码或少改动源码,
- VS2008 +Vista :IDe中设计界面不能正确显示控件
- 一个月悬而未解的难题(后台发送处理的乱码问题),难道没有人能处理吗?解决者100分送上
- 程序员们进来帮我看看!
- Response.Expires=0 在asp.net中对应的代码是什么?
- 简单问题请教!
- 别人的论坛程序在本机运行,报错!请看错误信息!!!
- 建行个人支付接口开发问题,急急急啊!!求大神解答!!
- treeview 绑定xml文件出错~~~求助~~~~~
- 无法触发TextChanged事件
// 摘要:
// 将指定的节点紧接着插入指定的引用节点之后。
//
// 参数:
// newChild:
// 要插入的 XmlNode。
//
// refChild:
// XmlNode,它是引用节点。newNode 放置在 refNode 之后。
//
// 返回结果:
// 插入的节点。
//
// 异常:
// System.InvalidOperationException:
// 此节点的类型不允许 newChild 节点类型的子节点。newChild 是此节点的上级节点。
//
// System.ArgumentException:
// newChild 是从不同于创建此节点的文档创建的。refChild 不是此节点的子级。该节点是只读的。
public virtual XmlNode InsertAfter(XmlNode newChild, XmlNode refChild);// 摘要:
// 将指定的节点紧接着插入指定的引用节点之前。
//
// 参数:
// newChild:
// 要插入的 XmlNode。
//
// refChild:
// XmlNode,它是引用节点。newChild 放置在该节点之前。
//
// 返回结果:
// 插入的节点。
//
// 异常:
// System.InvalidOperationException:
// 当前节点的类型不允许 newChild 节点类型的子节点。newChild 是此节点的上级节点。
//
// System.ArgumentException:
// newChild 是从不同于创建此节点的文档创建的。refChild 不是此节点的子级。该节点是只读的。
public virtual XmlNode InsertBefore(XmlNode newChild, XmlNode refChild);// 摘要:
// 将指定的节点添加到该节点的子节点列表的开头。
//
// 参数:
// newChild:
// 要添加的节点。将要添加的节点的全部内容移动到指定位置。
//
// 返回结果:
// 添加的节点。
//
// 异常:
// System.InvalidOperationException:
// 此节点的类型不允许 newChild 节点类型的子节点。newChild 是此节点的上级节点。
//
// System.ArgumentException:
// newChild 是从不同于创建此节点的文档创建的。该节点是只读的。
public virtual XmlNode PrependChild(XmlNode newChild);
下边有个子节点XmlNode node1_1,
你还有个XmlNode node,想添加到node1中,
如果想放在node1_1前边,就是node1.InsertBefore(node,node1_1)
如果想放在node1_1后边,就是node1.InsertAfter(node,node1_1)
如果想放在node1最前边,就是node1.PrependChild(node1)
如果想放在node1最后边,就是node1.AppendChild(node1)
http://blog.csdn.net/qiang218/archive/2007/08/08/1731842.aspx
#region xmlRW /// <summary>
/// 插入布局脚本
/// </summary>
/// <param name="tagID">要插入的tagID</param>
/// <param name="insertContent">插入内容</param>
/// <param name="order">顺序</param>
/// <param name="strHtml">脚本</param>
/// <returns></returns>
public static string InsertToTag(string tagID, string insertContent, int order, string strHtml) {
XmlDocument xmldoctmp = new XmlDocument();
xmldoctmp.LoadXml(strHtml);
XmlElement rootNode = xmldoctmp.DocumentElement;
bool isLoad = false;
if (rootNode != null) {
XmlNodeList subNodes = rootNode.ChildNodes; foreach (XmlNode trNode in subNodes) {
XmlNodeList childNodes = trNode.ChildNodes;
foreach (XmlNode tdNode in childNodes) {
if (tdNode.Attributes["id"].Value == tagID) {
isLoad = true;
if (tdNode.ChildNodes.Count > 0) {
string nodeText = "";
if (order == 0) {
nodeText += insertContent;
foreach (XmlNode tdchNode in tdNode.ChildNodes) {
nodeText += tdchNode.OuterXml;
}
}
else if (tdNode.ChildNodes.Count > order) {
for (int i = 0; i < order; i++) {
nodeText += tdNode.ChildNodes[i].OuterXml;
}
nodeText += insertContent;
for (int i = order; i < tdNode.ChildNodes.Count; i++) {
nodeText += tdNode.ChildNodes[i].OuterXml;
}
}
else if (tdNode.ChildNodes.Count <= order) {
foreach (XmlNode tdchNode in tdNode.ChildNodes) {
nodeText += tdchNode.OuterXml;
}
nodeText += insertContent;
} tdNode.InnerXml = nodeText;
}
else
tdNode.InnerXml = tdNode.InnerXml + insertContent;
}
}
}
//没有找到对应的区域,则插入最后一个
if (!isLoad) {
XmlNode lastNode;
if (subNodes.Count > 0) {
lastNode = subNodes[subNodes.Count - 1];
if (lastNode.ChildNodes.Count > 0) {
lastNode = lastNode.ChildNodes[lastNode.ChildNodes.Count - 1];
lastNode.InnerXml += insertContent;
}
}
}
} return rootNode.OuterXml;
} #endregion
{
HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)
{
switch (where)
{
case 'beforeBegin':
this.parentNode.insertBefore(parsedNode,this)
break;
case 'afterBegin':
this.insertBefore(parsedNode,this.firstChild);
break;
case 'beforeEnd':
this.appendChild(parsedNode);
break;
case 'afterEnd':
if (this.nextSibling) this.parentNode.insertBefore(parsedNode,this.nextSibling);
else this.parentNode.appendChild(parsedNode);
break;
}
} HTMLElement.prototype.insertAdjacentHTML = function (where,htmlStr)
{
var r = this.ownerDocument.createRange();
r.setStartBefore(this);
var parsedHTML = r.createContextualFragment(htmlStr);
this.insertAdjacentElement(where,parsedHTML)
} HTMLElement.prototype.insertAdjacentText = function (where,txtStr)
{
var parsedText = document.createTextNode(txtStr)
this.insertAdjacentElement(where,parsedText)
}
}