首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何向xml文件中添加新节点

如何向xml文件中添加新节点
EN

Stack Overflow用户
提问于 2013-10-09 21:32:14
回答 2查看 1.3K关注 0票数 0

在将节点添加到现有xml时,我遇到了问题。我不确定节点是否是正确的名称。如果不是,可以有人纠正我吗?它要大得多,但这个例子应该能起作用。

以下是xml文件的样子。

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<MovieData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Movie>
        <Name>Death Race</Name>
        <Type>Action</Type>
        <Type>Adventure</Type>
        <Rating>R</Rating>
        <Disk>Blu-Ray</Disk>
    </Movie>
    <Movie>
        <Name>Death Race 2</Name>
        <Type>Action</Type>
        <Type>Adventure</Type>
        <Rating>R</Rating>
        <Disk>Blu-Ray</Disk>
    </Movie>
</MovieData>

现在我想让它变成这样。

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<MovieData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Movie>
        <Name>Death Race</Name>
        <Type>Action</Type>
        <Type>Adventure</Type>
        <Rating>R</Rating>
        <Disk>Blu-Ray</Disk>
        <Time>time</Time>
    </Movie>
    <Movie>
        <Name>Death Race 2</Name>
        <Type>Action</Type>
        <Type>Adventure</Type>
        <Rating>R</Rating>
        <Disk>Blu-Ray</Disk>
        <Time>time</Time>
    </Movie>
</MovieData>

这就是我到目前为止所拥有的。我希望能够在下面的代码中添加时间节点和值。

代码语言:javascript
运行
复制
XmlDocument doc = new XmlDocument();
doc.Load(movieListXML);
XmlNode node = doc.SelectSingleNode("/MovieData");
foreach (XmlNode movie in node.SelectNodes("Movie"))
{
    if (movie != null)
    {
        // Do stuff here.
        // I'm not sure what to do here.
    }
}

这也没用。

代码语言:javascript
运行
复制
XmlDocument doc = new XmlDocument();
doc.Load(movieListXML);
XmlNode node = doc.SelectSingleNode("/MovieData");
foreach (XmlNode movie in node.SelectNodes("Movie"))
{
    if (movie != null)
    {
        // Do stuff here.
        // I'm not sure what to do here.
        using(XmlWriter writer = node.CreateNavigator().AppendChild())
        {
            writer.WriteStartElement("SeriesType", movieListXML);
            writer.WriteElementString("Time", movieListXML, "time");
            writer.WriteEndElement();
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-09 22:04:36

我通常使用Linq的XDocument来处理XML。您需要在using语句中添加一个System.Xml.Linq。应该是这样的:

代码语言:javascript
运行
复制
        string movieListXML = @"c:\test\movies.xml";
        XDocument doc = XDocument.Load(movieListXML);
        foreach (XElement movie in doc.Root.Descendants("Movie"))
        {
            movie.Add(new XElement("Time", "theTime"));
        }
        doc.Save(movieListXML);
票数 2
EN

Stack Overflow用户

发布于 2013-10-09 21:39:55

代码语言:javascript
运行
复制
XmlDocument doc = new XmlDocument();
doc.Load(movieListXML);
XmlNode node = doc.SelectSingleNode("/MovieData");
foreach (XmlNode movie in node.SelectNodes("Movie"))
{
    if (movie != null)
    {
        XmlElement elem = doc.CreateElement("Time");
        elem.InnerText = "time";
        movie.AppendChild(elem);
    }
}
doc.Save(movieListXML);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19283138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档