写入xml文件

本文关键字:文件 xml 写入 | 更新日期: 2023-09-27 18:09:07

我想知道我是否采用了正确的方法来写入XML文件,因为当我在此之后查看文件时,更改不存在

    XmlDocument doc = new XmlDocument();
    doc.Load("pubs.xml");
    XmlElement root = doc.DocumentElement;
    XmlElement pub = doc.CreateElement("Pub");
    XmlElement name = doc.CreateElement("Name");
    XmlElement address = doc.CreateElement("Address");
    XmlElement postCode = doc.CreateElement("PostCode");
    XmlElement score = doc.CreateElement("PubScore");
    name.InnerText = txtName.Text;
    address.InnerText = txtAddress.Text;
    postCode.InnerText = txtPc.Text;
    score.InnerText = txtPs.Text;
    pub.AppendChild(name);
    pub.AppendChild(address);
    pub.AppendChild(postCode);
    pub.AppendChild(score);
    root.AppendChild(pub);
    doc.Save("pubs.xml");

这个,在文档的根应该写一个元素,如

<Pub>
    <Name>xxx</Name>
    <Address>xxx</Address>
    <OnlineRating>xxx</OnlineRating>
    <PostCode>xxx</PostCode>
</Pub>

attempt change:

   private void btnAdd_Click(object sender, EventArgs e)
    {
        XDocument doc = new XDocument(
            new XElement("Pub",
                new XElement("Name", txtName.Text),
                new XElement("Addresss", txtAddress.Text),
                new XElement("OnlineRating", txtPs.Text),
                new XElement("PostCode", txtPc.Text),
            )
        );
        doc.Save("pubs.xml");
    }

写入xml文件

如果你使用的是。net 3.5或更高版本,那么你可以这样写:

XDocument doc = new XDocument(
   new XElement("Pub",
       new XElement("Name", "xxx"),
       new XElement("Addresss", "xxx"),
       new XElement("OnlineRating", "xxx"),
       new XElement("PostCode", "xxx")
   )
);
doc.Save("pubs.xml");

你完成了!

同样,如果您希望XML为:
<Pub>
    <Name FirstName="Xyz" SecondName="Abc" />
    <PostCode Code="8787"/>
</Pub>

那么你可以这样做:

XDocument doc = new XDocument(
   new XElement("Pub",
       new XElement("Name", new XAttribute("FirstName", "Xyz"), new XAttribute("SecondName", "Abc")),
       new XElement("PostCode", new XAttribute("Code", "8787"))
   )
);
doc.Save("pubs.xml");

如果您想加载一个现有的XML文件,并且希望将这些附加到该文件中,那么执行以下操作:

XDocument doc = XDocument.Load("pubs.xml"); //load the existing file!
//add one element with its descendants
doc.Add(new XElement("Pub",
           new XElement("Name", "xxx"),
           new XElement("Addresss", "xxx"),
           new XElement("OnlineRating", "xxx"),
           new XElement("PostCode", "xxx")
         )
     );
doc.Save("pubs.xml"); //save the whole document!

可能是完全错误的,但你试过改变:

 pub.AppendChild(name); 
 pub.AppendChild(address); 
 pub.AppendChild(postCode); 
 pub.AppendChild(score); 
 root.AppendChild(pub); 

root.AppendChild(pub); 
pub.AppendChild(name); 
pub.AppendChild(address); 
pub.AppendChild(postCode); 
pub.AppendChild(score); 

只是执行你的代码片段在"pub .xml",看起来像这样…

<SomeElement>
    <SomeTag1/>
    <SomeTag2/>
    <SomeTag3/>
</SomeElement>

…生成以下"pub .xml"…

<SomeElement>
  <SomeTag1 />
  <SomeTag2 />
  <SomeTag3 />
  <Pub>
    <Name>name</Name>
    <Address>address</Address>
    <PostCode>post_code</PostCode>
    <PubScore>score</PubScore>
  </Pub>
</SomeElement>

…如果我没理解错的话,这就是你想要的(你说:"…文档的根应该写一个像…"的元素。

所以无论什么导致你的问题是在你给我们看的代码片段之外。

你确定doc.Save("pubs.xml")是成功的,而不是抛出一个异常(例如,由于只读标志)?

另外,您确定正在查看右边的"pub .xml"吗?也许你有不止一份副本,而你碰巧看错了?查看doc.BaseURI以确认要写入的文件的实际位置。