写入xml文件

时间:2011-09-19 19:26:53

标签: c# xml

我想知道我是否采用正确的方法写入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>

尝试更改:

   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");
    }

3 个答案:

答案 0 :(得分:1)

如果您使用的是.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!

答案 1 :(得分:0)

可能完全错误,但您尝试过更改:

 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); 

因为这对我来说更具逻辑意义......

答案 2 :(得分:0)

只需执行截断“pubs.xml”的代码,就像这样......

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

...生成以下“pubs.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")是否成功并且没有抛出异常(例如,应该是只读标志)?

另外,您确定要查看正确“pubs.xml”吗?也许你有不止一个副本而且你碰巧看错了?查看doc.BaseURI以确认要写入的文件的实际位置。