如何向xml中添加新节点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何向xml中添加新节点相关的知识,希望对你有一定的参考价值。

我的XML内容是
<?xml version="1.0" encoding="utf-8"?><c id='0'><h id='96' ip='125.78.70.*' addtime='17:51' face='0' color1='0' username='路过'><![CDATA[可以]]></h></c>
是ASP向xml中添加新节点
能说的详细点吗?

参考技术A XmlNode xmldocSelect=xmlDoc.SelectSingleNode("user");

XmlElement el=xmlDoc.CreateElement("person"); //添加person节点
el.SetAttribute("name","风云"); //添加person节点的属性"name"
el.SetAttribute("sex","女"); //添加person节点的属性 "sex"
el.SetAttribute("age","25"); //添加person节点的属性 "age"

XmlElement xesub1=xmlDoc.CreateElement("pass"); //添加person节点的里的节点
xesub1.InnerText="123";//设置文本节点
el.AppendChild(xesub1);
XmlElement xesub2=xmlDoc.CreateElement("Address");
xesub2.InnerText="昆明";//设置文本节点
el.AppendChild(xesub2);

xmldocSelect.AppendChild(el);
xmlDoc.Save(Server.MapPath("user.xml"));本回答被提问者采纳
参考技术B 教你个捷径——使用DataSet.
DataSet.ReadXML("Path");
这样就读取了Path指定的xml文件的信息并存到DataSet.Tables[0].
在此Datatabl中修改数据病保存到DataSet中,
DataSet.WriteXML("Path");//保存修改
参考技术C 如果是C#的话,去我的文库看看吧,有一个关于XML操作的文件

如何使用 sed 向每个 XML 节点添加命名空间

【中文标题】如何使用 sed 向每个 XML 节点添加命名空间【英文标题】:How to add a namespace to each XML node with sed 【发布时间】:2021-12-01 02:55:48 【问题描述】:

给定以下 XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response xmlns="...">
    <root>
        <test>abc</test>
    </root>
</response>

我需要像这样为每个元素添加一个命名空间:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns:response xmlns:ns="...">
    <ns:root>
        <ns:test>abc</ns:test>
    </ns:root>
</ns:response>

sed 可以吗?我知道sed 不是处理 XML 的最佳工具...

可能有嵌套节点,但没有一个已经拥有命名空间。最后,没有属性。

【问题讨论】:

如果没有更详细的说明您需要做什么,很难知道 - 对于给出的单个示例,您可以使用 s/test/ns:test/g 但我确定这不是您想要的。 我不知道节点的名称......我只需要一种简单的方法来将给定的命名空间添加到 XML 中的所有节点。您建议的解决方案意味着我知道标签... 我的建议是故意指出你没有给我们足够的信息。你曾经在同一行有两个标签吗?嵌套标签?标签是否包含字符串“ns:”?是否有任何标签已经 有命名空间前缀?它们中的任何一个都有属性吗?有没有自闭的?所有这些复杂性都可能使某些解决方案无效。 这可能会有所帮助:How do I add a namespace to all elements in a node? 好的,更新问题。 【参考方案1】:

对需求的描述如此简陋,您只能这样做:

sed 's!</\|<!&ns:!g' your_file

代码

使用!作为分隔符,所以/不需要转义; 搜索字符串通过替换 \| 匹配 &lt;/&lt;; 替换由匹配的部分本身组成,&amp;,后跟ns:; 所有这些都是通过g在整条线上完成的。

您在评论中说您想跳过以&lt;?xml 开头的行的提交,但更改s 命令只会使其更长且可读性降低。

由于该行始终是第一行,因此您可以通过在s 命令前添加2,$ 来定位除第一行之外的所有行。

【讨论】:

这正是我要找的...只需要跳过第一行 (&lt;?xml...)。

以上是关于如何向xml中添加新节点的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sed 向每个 XML 节点添加命名空间

通过 PHP 在 XML 文件中添加新节点

如何向我的 Elasticsearch 集群添加新节点

如何向 SOAP XML 添加新元素

C# 向xml添加节点 或者说添加一个不同数据结构的表

XML 从数组中搜索节点并将新数据添加到新节点