1

ファイルに画像を追加する機能を追加したいと考えています。画像を文字列に変換して画像に戻す機能があり、正常に動作します。

XML ファイル データ

<MovieData>
    <Movie>
        <Name>Death Race</Name>
        <Type>Action</Type>
        <Type>Adventure</Type>
        <Rating>R</Rating>
        <Disk>Blu-Ray</Disk>
        <Owner>N/A</Owner>
        <Location>N/A</Location>
        <SeriesType>Movie Series</SeriesType>
        <LengthHr>1</LengthHr>
        <LengthMin>51</LengthMin>
        <Time>10 : 44 : 23 PM</Time>
        <Date>10/13/2013</Date>
      </Movie>
      <Movie>
        <Name>Death Race 2</Name>
        <Type>Action</Type>
        <Type>Adventure</Type>
        <Rating>R</Rating>
        <Disk>Combo</Disk>
        <Owner>N/A</Owner>
        <Location>N/A</Location>
        <SeriesType>Movie Series</SeriesType>
        <LengthHr>1</LengthHr>
        <LengthMin>41</LengthMin>
        <Time>9 : 52 : 34 PM</Time>
        <Date>10/9/2013</Date>
      </Movie>
</MovieData>

私はそれをどのように見せたいですか:

<MovieData>
      <Movie>
        <Name>Death Race</Name>
        <Type>Action</Type>
        <Type>Adventure</Type>
        <Rating>R</Rating>
        <Disk>Blu-Ray</Disk>
        <Owner>N/A</Owner>
        <Location>N/A</Location>
        <SeriesType>Movie Series</SeriesType>
        <LengthHr>1</LengthHr>
        <LengthMin>51</LengthMin>
        <Image>string</Image>//Needs to be here.If it is after date that is fine too.
        <Time>10 : 44 : 23 PM</Time>
        <Date>10/13/2013</Date>
      </Movie>
      <Movie>
        <Name>Death Race 2</Name>
        <Type>Action</Type>
        <Type>Adventure</Type>
        <Rating>R</Rating>
        <Disk>Combo</Disk>
        <Owner>N/A</Owner>
        <Location>N/A</Location>
        <SeriesType>Movie Series</SeriesType>
        <LengthHr>1</LengthHr>
        <LengthMin>41</LengthMin>
        <Image>string</Image>
        <Time>9 : 52 : 34 PM</Time>
        <Date>10/9/2013</Date>
      </Movie>
</MovieData>

コード:

try
{
    string name = movieSaveImageNameTB.Text;
    string date = movieSaveImageDateTB.Text;
    string time = movieSaveImageTimeTB.Text;
    string hr = movieSaveImageHrTB.Text;
    string min = movieSaveImageMinTB.Text;
    XmlDocument doc = new XmlDocument();
    doc.Load(movieListXML);
    XmlNode node = doc.SelectSingleNode("/MovieData");
    foreach (XmlNode movie in node.SelectNodes("Movie"))
    {
        if (movie != null)
        {
            if ((movie["Name"].InnerText == name) && (movie["Date"].InnerText == date) && (movie["Time"].InnerText == time) && 
                        (movie["LengthHr"].InnerText == hr) && (movie["LengthMin"].InnerText == min))
            {
                // This works but doesn't give the results i want.
                XmlNode n = doc.CreateNode(movie["Name"].NodeType, "Image", movie.NamespaceURI);
                movie.InsertAfter(n, movie.LastChild);
                doc.Save(movieListXML);
            }
        }
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

使用している正しい XML ファイル形式で更新しました。ごめんなさい

これを試しました。

XmlNodeList nodeList = movie.ChildNodes;
foreach (XmlNode nl in nodeList)
{
    if (nl.Name == "LengthMin")
    {
        XmlElement xNewChild = doc.CreateElement("Image");
        xNewChild.InnerText = "string";
        doc.DocumentElement.InsertAfter(xNewChild, nl);
    }
}

それはまだそのノードの子ではないというエラーを示しています...

4

1 に答える 1