2014-03-01 3 views
1

일부 데이터를 XML 파일에 넣어야합니다. 당신이 볼 수 있듯이 I (2 개 루트 요소가? XML 버전 = "1.0"나는 데이터를 직렬화 XmlSerializer를 사용할 수 있습니다,하지만 난 데이터를 여러 번 작성해야, 그래서 XmlSerializer를 사용하는 경우 그XML에 데이터 삽입하는 방법

<?xml version="1.0" encoding="utf-8"?> 
<Address xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <AddressId>0</AddressId> 
    <Country>Test5</Country> 
    <Region>Test5</Region> 
    <Locality>Test5</Locality> 
    <Street>Test5</Street> 
    <HouseNumber>Test5</HouseNumber> 
    <BuildingNumber>Test5</BuildingNumber> 
    <ApartmentNumber>Test5</ApartmentNumber> 
</Address> 

<?xml version="1.0" encoding="utf-8"?> 
<Address xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <AddressId>0</AddressId> 
    <Country>Test6</Country> 
    <Region>Test6</Region> 
    <Locality>Test6</Locality> 
    <Street>Test6</Street> 
    <HouseNumber>Test6</HouseNumber> 
    <BuildingNumber>Test6</BuildingNumber> 
    <ApartmentNumber>Test6</ApartmentNumber> 
</Address> 

뭔가를 얻을 encoding = "utf-8"?>) 파일에 정보를 추가했기 때문입니다. 사용자가 여러 번 정보를 추가 할 수 있기 때문에 List를 사용할 수 없기 때문에 List와 비슷한 문제가 발생합니다. 또한 Linq에 대해 XML을 알고 있었지만 XML 파일을 만들려고 할 때 오류가 발생했습니다 해당 Xml 파일에 루트 요소가 없습니다.

 XmlDocument xmlDocument = new XmlDocument(); 
     XElement xmlTree = 
     new XElement("Addresses", 
     new XElement("Address",new XAttribute("Id","1000"),       
     new XElement("Country", address.Country), 
     new XElement("Region", address.Region), 
     new XElement("Locality", address.Locality), 
     new XElement("Street", address.Street), 
     new XElement("HouseNumber", address.HouseNumber), 
     new XElement("BuildingNumber", address.BuildingNumber), 
     new XElement("ApartmentNumber", address.ApartmentNumber) 
     ) 
     ); 
     xmlDocument.Save("MvcApp4.xml"); 

그래서 내 목표에 사용 하시겠습니까?

답변

3

당신은 당신의 문서에 요소를 추가하지 않은, 당신은 XDocument 필요 LINQ to XMLXmlDocument 클래스에 속하지 않는 :

XDocument xmlDocument = new XDocument(); 
XElement xmlTree = 
     new XElement("Addresses", 
     new XElement("Address", new XAttribute("Id", "1000"), 
     new XElement("Country", address.Country), 
     new XElement("Region", address.Region), 
     new XElement("Locality", address.Locality), 
     new XElement("Street", address.Street), 
     new XElement("HouseNumber", address.HouseNumber), 
      new XElement("BuildingNumber", address.BuildingNumber), 
      new XElement("ApartmentNumber", address.ApartmentNumber) 
     ) 
     ); 
xmlDocument.Add(xmlTree); 
xmlDocument.Save("MvcApp4.xml"); 

을 또는 당신은 단지 XElement 자체를 절약 할 수 있습니다 :

xmlTree.Save("MvcApp4.xml"); 
관련 문제