0

私のasp.net Webサイトにはxmlファイルがあります

<Image Header="About">
<Imagepath>group.jpg</Imagepath>
<imagetitle>together is fun!</imagetitle>
</Image>

ページがあり、そのページにテキスト ボックスとファイル アップロード コントロールがあります。重複したノードを xml ファイルに挿入しないようにするにはどうすればよいですか?

string spath = Server.MapPath("~/multipleimage.xml");
XmlDocument doc = new XmlDocument();
doc.Load(spath);

XmlNode Image = doc.CreateNode(XmlNodeType.Element, "Image", null);
XmlAttribute att = doc.CreateAttribute("Header");
att.Value = "AboutPAPCP";
Image.Attributes.Append(att);

XmlNode Imagepath = doc.CreateNode(XmlNodeType.Element, "Imagepath", null);
string imagepath = FleUpdgallery.FileName;
Imagepath.InnerText = imagepath;                    

string filename = Path.GetFileName(FleUpdgallery.FileName);
FleUpdgallery.SaveAs(Server.MapPath("~/uploads/" + filename));
Image.AppendChild(Imagepath);

doc.SelectSingleNode("//RootImage").AppendChild(Image);
doc.Save(spath);
4

1 に答える 1

0

XPath を使用して、ノードが既に存在するかどうかを確認してください。このような:

string spath = Server.MapPath("~/multipleimage.xml");
XmlDocument doc = new XmlDocument();
doc.Load(spath);

//use XPath to search for the node named Image with an attribute Header="AboutPAPCP"
XmlNodeList existingImages = doc.SelecteNodes("*/Image[@Header='AboutPAPCP']");
//if it wasn't found, then it is safe to insert a new node
if (existingImages == null || existingImages.count == 0)
{
    XmlNode Image = doc.CreateNode(XmlNodeType.Element, "Image", null);
    XmlAttribute att = doc.CreateAttribute("Header");
    att.Value = "AboutPAPCP";
    Image.Attributes.Append(att);

    XmlNode Imagepath = doc.CreateNode(XmlNodeType.Element, "Imagepath", null);
    string imagepath = FleUpdgallery.FileName;
    Imagepath.InnerText = imagepath;                    

    string filename = Path.GetFileName(FleUpdgallery.FileName);
    FleUpdgallery.SaveAs(Server.MapPath("~/uploads/" + filename));
    Image.AppendChild(Imagepath);

    doc.SelectSingleNode("//RootImage").AppendChild(Image);
    doc.Save(spath);
}
于 2013-04-24T13:15:03.410 に答える