PDA

View Full Version : Ai pro XML và C# giúp dùm cái này



tauruszeus
08-04-2009, 15:24
Mình có 1 file XML, MÌnh muốn thay đổi nội dung trong các thẻ XML, cụ thể ở đây mình cần chuẩn hóa chuỗi text trong từng thẻ XML. Ví dụ:
<a>
<b> hom nay troi dep qua đi </b>
<c>
<d>abc abc, asdf fgdsfga fgd </d>
</c>
</a>

file kết quả sẽ là:
<a>
<b>HOM NAY TROI DEP QUA DI </b>
<c>
<d>ABC ABC, ASDF FGDSFAG FGD</d>
</c>
</a>

Dữ liệu đầu vào là 1 file XML, đầu ra cũng là 1 file XML
Mình đang viết bằng C#.
Bạn nào biết giúp dùm, gấp lắm!
Ý tưởng cũng dc!
Liên hệ: tsanphong@gmail.com

shinobiBT
08-04-2009, 16:03
Bạn code như sau thử xem có được không

XMLDocument ChangeXMLContent(XMLDocument input)
{
XMLDocument xmlWorkingDocument = new XMLDocument();
xmlWorkingDocument = XMLDocument.Load("filepath");
XMLNode xmlWorking = xmlWorkingDocument.DocumentElement;
XMLNode temp;
if (xmlWorking.hasChildNodes)
{
temp = xmlWorking.FirstChild;
while (xmlWorking != null)
{
switch (xmlWorking.Name)
case "b": xmlWorking.FirstChild.Value.ToUpper();
break;
}
}
}

Đó, cứ như vậy mà bạn áp dụng nhé.

nhanhchan
08-04-2009, 17:00
Ai lại làm thế. Bạn đọc toàn bộ XML Document len, upercase hết là xong.
Đâu nhất thiết bạn phải lowercase mấy cái tag đúng không? Vì nếu làm vậy cũng chẳng có nghĩa gì
:)

dammio
08-04-2009, 23:23
Có phải bạn đang làm đề tài chuẩn hóa dữ liệu theo định dạng cho XML phải ko ?

Trường hợp này chuẩn hóa kèm theo file *.CSS để hiển thị có lẽ là nhẹ nhàng nhất nhưng theo yêu cầu của bạn có lẽ làm theo 2 bạn ở trên là cũng được !

tauruszeus
09-04-2009, 04:02
Bạn code như sau thử xem có được không

XMLDocument ChangeXMLContent(XMLDocument input)
{
XMLDocument xmlWorkingDocument = new XMLDocument();
xmlWorkingDocument = XMLDocument.Load("filepath");
XMLNode xmlWorking = xmlWorkingDocument.DocumentElement;
XMLNode temp;
if (xmlWorking.hasChildNodes)
{
temp = xmlWorking.FirstChild;
while (xmlWorking != null)
{
switch (xmlWorking.Name)
case "b": xmlWorking.FirstChild.Value.ToUpper();
break;
}
}
}

Đó, cứ như vậy mà bạn áp dụng nhé.
Cám ơn bạn rất nhiều!
Code như bạn mình làm dc rồi! Chạy rất ổn!
Thật ra thì việc ToUpper nội dung trong XML là do mình đặt ra thôi, tại lúc đầu mình ko bít duyệt cây XML như thế nào. :D Cái mình cần là thay đổi luôn nội dung bên trong thẻ theo quy tắc: Nếu từ nào xuất hiện < 2 lần và từ nào xuất hiện > 10 thì xóa đi. Những từ còn lại thì nếu giống nhau chỉ giữ lại 1. Ví dụ từ Johns xuất hiện 5 lần (ko nằm trong dk xóa) thì chỉ giữ 1 từ Johns. Sau khi chuẩn hóa theo quy tắc trên thì lưu thành 1 file XML khác.

aminpro
01-05-2009, 11:28
Có 3 cách để đọc và duyệt qua nội dung của file XML
·Sử dụng XmlNodeList: nội dung file XML sẽ được đọc vào memory bằng cách dùng phương thức Load() của XmlNodeList. Class này cho phép ta duyệt, tìm kiếm, thay đổi dữ liệu và save ngược lại file
·Sử dụng XPathNavigator: nội dung file XML sẽ được đọc vào XPathNavigator, đây là class cho phép đọc, duyệt và tìm kiếm dữ liệu nhanh hơn so với XmlNodeList. Tuy nhiên XPathNavigator không có chức năng cập nhật dữ liệu
·Sử dụng XmlTextReader: là class cho phép duyệt file XML theo từng node một lần từ đầu cho đến cuối file. Tốc độ duyệt rất nhanh và tốn ít tài nguyên.