SORU
21 EKİM 2008, Salı


C XML ile nasıl başa#

XML belgeleri, YANITLANAN ve C şeyleri# 2.0 tüm ile başa çıkmak için en iyi yolu nedir? Ne vb kullanmak için sınıfları. Ayrıştırma ve XML belgeleri vb yapma en iyi uygulamaların neler olduğu gibi.

DÜZENLEME: .Net 3.5 önerileri de açığız.

CEVAP
21 EKİM 2008, Salı


Ve C# 2.0 okuma yazma birincil aracı aracılığıyla yapılırXmlDocumentsınıf. Ayarlarınızı en doğrudan kabul XmlReader ile XmlDocument içine yükleyebilirsiniz.

Yükleme XML Doğrudan

XmlDocument document = new XmlDocument();
document.LoadXml("<People><Person Name='Nick' /><Person Name='Joe' /></People>");

Yükleme dosyasından XML

XmlDocument document = new XmlDocument();
document.Load(@"C:\Path\To\xmldoc.xml");
// Or using an XmlReader/XmlTextReader
XmlReader reader = XmlReader.Create(@"C:\Path\To\xmldoc.xml");
document.Load(reader);

Bir XML belgesini okumak için en kolay/en hızlı yolu XPath kullanarak bulabilirsiniz.

Bir XML Belgesi XPath kullanarak bize düzenlemesine izin veren XmlDocument Kullanarak) okuma

XmlDocument document = new XmlDocument();
document.LoadXml("<People><Person Name='Nick' /><Person Name='Joe' /></People>");

// Select a single node
XmlNode node = document.SelectSingleNode("/People/Person[@Name = 'Nick']");

// Select a list of nodes
XmlNodeList nodes = document.SelectNodes("/People/Person");

Eğer ANNOTATİON belgeleri ile bir XML belgesini doğrulamak için çalışmak istiyorsanız bunu kullanabilirsiniz.

XSD Şemaları karşı XML Belgeleri doğrulamak

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidateType = ValidationType.Schema;
settings.Schemas.Add("", pathToXsd); // targetNamespace, pathToXsd

XmlReader reader = XmlReader.Create(pathToXml, settings);
XmlDocument document = new XmlDocument();

try {
    document.Load(reader);
} catch (XmlSchemaValidationException ex) { Trace.WriteLine(ex.Message); }

Her Düğüm at YANITLANAN (UPDATE 1) karşı XML doğrulamak

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidateType = ValidationType.Schema;
settings.Schemas.Add("", pathToXsd); // targetNamespace, pathToXsd
settings.ValidationEventHandler  = new ValidationEventHandler(settings_ValidationEventHandler);

XmlReader reader = XmlReader.Create(pathToXml, settings);
while (reader.Read()) { }

private void settings_ValidationEventHandler(object sender, ValidationEventArgs args)
{
    // e.Message, e.Severity (warning, error), e.Error
    // or you can access the reader if you have access to it
    // reader.LineNumber, reader.LinePosition.. etc
}

Bir XML Belgesi (manuel) yazma

XmlWriter writer = XmlWriter.Create(pathToOutput);
writer.WriteStartDocument();
writer.WriteStartElement("People");

writer.WriteStartElement("Person");
writer.WriteAttributeString("Name", "Nick");
writer.WriteEndElement();

writer.WriteStartElement("Person");
writer.WriteStartAttribute("Name");
writer.WriteValue("Nick");
writer.WriteEndAttribute();
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();

writer.Flush();

(UPDATE 1)

.NET kullanın 3.5, benzer görevleri gerçekleştirmek için XDocument. Fark Etmeniz Sorgular ihtiyacın kesin bir veri seçmek için performans avantajı var ancak. Nesne başlatıcılar ilavesi ile bile sorguda kendi definition doğru nesneleri kendi kendini döndüren bir sorgu oluşturabilirsiniz.

    XDocument doc = XDocument.Load(pathToXml);
    List<Person> people = (from xnode in doc.Element("People").Elements("Person")
                       select new Person
                       {
                           Name = xnode.Attribute("Name").Value
                       }).ToList();

(GÜNCELLEME 2)

Güzel bir şekilde .NET 3.5 XDocument XML aşağıda oluşturmak için kullanmaktır. Bu kodu istediğiniz çıktıyı benzer bir model gibi görünmesini sağlar.

XDocument doc =
        new XDocument(
              new XDeclaration("1.0", Encoding.UTF8.HeaderName, String.Empty),
              new XComment("Xml Document"),
              new XElement("catalog",
                    new XElement("book", new XAttribute("id", "bk001"),
                          new XElement("title", "Book Title")
                    )
              )
        );

oluşturur

<!--Xml Document-->
<catalog>
  <book id="bk001">
    <title>Book Title</title>
  </book>
</catalog>

Her şey burada ve daha görüştüm, bu birçok örnek vardır bu Microsoft Knowledge Base makalesi bakabilirsiniz başarısız olur. http://msdn.microsoft.com/en-us/library/aa468556.aspx

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DrePwn

    DrePwn

    22 Temmuz 2011
  • engineerguy

    engineerguy

    10 Ocak 2010
  • sknbp

    sknbp

    16 Kasım 2006