2016-03-30 11 views
-5
<?xml version="1.0" standalone="yes"?> 
<tabWyt> 
    <Table1> 
    <LP>3818326</LP> 
    </Table1> 
    <Table1> 
    <LP>3818327</LP> 
    <BLOCK>CASH</BLOCK> 
    <ARBPL>JMSMF01 </ARBPL> 
    </Table1> 
    <Table1> 
    <LP>3818328</LP> 
    <BLOCK>CACH</BLOCK> 
    <ARBPL>JMSMF01 </ARBPL> 
    </Table1> 
    <Table1> 
    <LP>3818329</LP> 
    <BLOCK>CACH</BLOCK> 
    <ARBPL>JMSMF01 </ARBPL> 
    </Table1> 
    <Table1> 
    <LP>3818330</LP> 
    <BLOCK>CACH</BLOCK> 
    <ARBPL>JMSMF01 </ARBPL> 
    </Table1> 

Merhaba Forumda yeniyim, eğer hata yapıyorsam lütfen bizimle ol. xml dosyasından (LP) en fazla değeri almak ve bir sonraki inkrement xml dosyasının başlangıcı olarak kullanmak istiyorum. burada dosyaxml'nin en büyük değerini nasıl yüklerim ve başka bir xml dosyasının değerini artırmaya çalışın

+0

Kuyu: Burada

var newXmlString = new Xml(Serializer.SerializeToXml(myTabWyt)); Console.WriteLine(newXmlString.PrettyXml); 

bir kamu özü buydu. Bunlardan hiç birini denedin mi? –

+0

Bu bir forum değil. Lütfen cevaplanabilecek bir soru yazmayı düşünün. Tüm girdileri ve b) şu ana kadar neler yaptığınızı bilmek zorundayız. Bunlardan hiçbirine sahip değilsin. – Hogan

+0

sadece C# içinde programlamaya başlıyor Yüklü prosedürle bir XML dosyası oluşturan bir Windows uygulaması yaratıyorum. Sonra bir xml dosyasından (LP değeri) en fazla değeri alır ve başka bir (LP) – SeTo

cevap

0

Artış yapmak istediğiniz için, Listeden miras alan bir Table1 nesnesi ve tabWyt nesnesi oluştururdum.

[XmlRoot("tabWyt")] 
public class TabWyt : List<Table1> 
{ 
    public int GetNextLp() 
    { 
     return Count > 0 ? this.Max(o => o.Lp) + 1 : 0; 
    } 

    new public void Add(Table1 t) 
    { 
     t.Lp = Math.Max(GetNextLp(), t.Lp); 
     base.Add(t); 
    } 
} 

Not: Yukarıdaki anahtar, yalnızca sizin için işleyen yeni bir Ekle yöntemi oluşturmaktır.

public class Table1 
{ 
    [XmlElement("LP")] 
    public int Lp { get; set; } 
    [XmlElement("BLOCK")] 
    public string Block { get; set; } 
    [XmlElement("ARBPL")] 
    public string Arbpl { get; set; } 
} 

Artık Xml'nizi kaldırabilirsiniz. Ben seri ve burada deserializing girmeyeceğim, ancak bunu okuyabilir:

var myTabWyt = Serializer.DeserializeFromXml<TabWyt>(ref xmlString); 

(http://www.rhyous.com/2010/04/29/generic-xml-serializer-class-for-c-and-an-xml-serialization-usage-example/)

Sonra seri kaldırma sonra, bir liste var ve sadece ona ekleyebilir.

myTabWyt.Add(new Table1{ Block="ABC", Arbpl = "XYZ01"}); 

Ardından Xml'yi yeniden oluşturmak için onu serileştirirsiniz. Ayrıca bir Xml nesnesine sardım, böylece kolayca xml yapabilirdim. Ben tamsayılar dizisine öğelerinin sırası dönüştürmek, LP kökenini seçin LINQ XML kullanın ve ardından Max kullanmayı tercih ediyorum, https://gist.github.com/rhyous/5176671fe33113bbc9808eb6e76ab1e6

+0

Rhyous Teşekkür ederim, ne demek istediğimi anladım – SeTo

+0

Bir şey değil. Xml'yi yeni başladığınızda öğrenmek zordur, çünkü Xml'yi ayrıştırmanın pek çok yolu vardır, nereden başlayacağını bilmek kafa karıştırıcı ve bunaltıcı olabilir. – Rhyous

İlgili konular