0

ノードを既存の xml に追加する際に問題があります。node が正しい名前かどうかはわかりません。そうでない場合は、誰かが私を修正してください。はるかに大きいですが、この例はうまくいくはずです。

xml ファイルは次のようになります。

<?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>

今はこのままで終わりたい。

<?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>

これは私がこれまでに持っているものです。以下のコードに時間ノードと値を追加できるようにしたいと考えています。

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.
    }
}

これもうまくいきません。

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();
        }
    }
}
4

2 に答える 2

2

私は通常、Linq の XDocument を使用して XML を処理します。using ステートメントに System.Xml.Linq を追加する必要があります。次のようになります。

        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);
于 2013-10-09T22:04:36.730 に答える
0
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);
于 2013-10-09T21:39:55.540 に答える