Có công cụ nào có thể định dạng tập tin XML định dạng (in đẹp) cũng như sắp xếp cả các phần tử và thuộc tính của nó?Công cụ phân loại/định dạng XML
Trả lời
Tôi đã tìm thấy bài đăng này: http://www.biglist.com/lists/xsl-list/archives/200106/msg01225.html sử dụng XSLT sau để XML thụt lề và cũng loại thuộc tính:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<!-- Sort the attributes by name. -->
<xsl:for-each select="@*">
<xsl:sort select="name(.)"/>
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()|comment()|processing-instruction()">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
Tôi đã không thử nó chưa, nhưng nhiều khả năng tôi sẽ dính vào XSLT để làm định dạng nhất cho tôi.
này là rất tốt để thứ tự xml thuộc tính, làm thế nào tôi cũng có thể đặt hàng con của một thẻ? – Natim
Tôi đang tìm kiếm một tiện ích tương tự và không thực sự tìm thấy những gì tôi đang tìm kiếm, vì vậy tôi chỉ vừa mới viết một thay thế. Nó rất đơn giản (và không bao gồm các thuộc tính trong phân loại nút), nhưng hoạt động.
Có thể nó sẽ hữu ích cho người khác .. Đó là trên GitHub.
Dưới đây là một chút từ trang GitHub ...
USAGE: sortxml.exe [options] infile [outfile]
infile The name of the file to sort, etc.
outfile The name of the file to save the output to.
If this is omitted, then the output is written to stdout.
OPTIONS:
--pretty Ignores the input formatting and makes the output look nice.
--sort Sort both the nodes and attributes.
--sortnode Sort the nodes.
--sortattr Sort the attributes.
(prefix an option with ! to turn it off.)
Mặc định là đầu ra các nút và các thuộc tính khá và được sắp xếp. Dưới đây là một ví dụ:
> type sample.xml
<?xml version="1.0" encoding="utf-8" ?><root><node value="one" attr="name"/></root>
> sortxml.exe sample.xml
<?xml version="1.0" encoding="utf-8"?>
<root>
<node attr="name" value="one" />
</root>
tôi thích công cụ này: https://xmlsorter.codeplex.com/
Bạn có thể sắp xếp theo tên thẻ và các thuộc tính. Tôi thích sử dụng nó trước khi so sánh một số tệp XML.
Điều này thậm chí sẽ không tải tệp XML. Có lỗi "XML không hợp lệ". Không thể xử lý thẻ doctype. Sau khi gỡ bỏ nó làm việc. – ScrappyDev
Điều này làm việc cho tôi để kiểm tra nhanh chóng một cặp tệp với hơn 7K dòng và có cấu trúc xml bán phức tạp, vì vậy ban đầu tôi rất ấn tượng. Không có lỗi nào cả. Tải xuống, khởi chạy và thực thi trơn tru/nhanh chóng. Một điều cần lưu ý là nó cho phép "sắp xếp thuộc tính" và "sắp xếp các thuộc tính cụ thể" và nơi bạn chọn những thuộc tính bạn muốn. Bạn có thể kiểm tra cả hai tùy chọn có vẻ chồng chéo. –
Đó là "Sắp xếp thuộc tính" và "Sắp xếp * theo * thuộc tính cụ thể", rất khác nhau. Các đơn đặt hàng đầu tiên các thuộc tính cho mỗi dòng, thứ hai sắp xếp tất cả các dòng theo nội dung của một thuộc tính cụ thể. Sau này là rất thực tế tôi nghĩ. – Gertsen
Out of thất vọng với Visual Studio mà dường như để sắp xếp lại & viết lại EDMX-files (Entity Framework) tất cả các thời gian (xem thêm Uservoice này), tôi đã viết một số LINQPad mã để sắp xếp lại thứ. Đó là tuy nhiên dễ dàng (và rõ ràng) để sử dụng bên ngoài của LinqPad.
Đơn đặt hàng các phần tử theo loại phần tử (thẻ), sau đó theo giá trị của thuộc tính phần tử "Tên", và sau đó là một số nội dung khác để cố gắng biến nó thành định nghĩa (xml khác nhau, nhưng ý nghĩa tương tự , là [thường] cùng một đầu ra - xem mã).
Nó cũng sắp xếp các thuộc tính. Lưu ý rằng ngữ nghĩa XML thuộc tính có thể không có (có liên quan) theo thứ tự, nhưng textually họ làm, và hệ thống kiểm soát phiên bản vẫn coi chúng plain text ...
(Lưu ý rằng nó không sửa chữa các bí danh khác nhau, được đề cập trong Entity Framework edmx file regenerating differently amongst team)
void Main()
{
XDocument xdoc = XDocument.Load(@"\\filepath1\file1.edmx");
var orderedElements = CopyAndSortElements(xdoc.Elements());
var newDoc = new XDocument();
newDoc.Add(orderedElements);
newDoc.Save(@"\\filepath1\file1.Ordered.edmx");
}
public IEnumerable<XElement> CopyAndSortElements(IEnumerable<XElement> elements)
{
var newElements = new List<XElement>();
// Sort XElements by Tag & name-attribute (and some other properties)
var orderedElements = elements.OrderBy(elem => elem.Name.LocalName) // element-tag
.ThenByDescending(elem => elem.Attributes("Name").Count()) // can be 0, more than 1 is invalid XML
.ThenBy(elem => (elem.Attributes("Name").Any() ? elem.Attributes("Name").First().Value.ToString() : string.Empty))
// in case of no Name-Attributes, try to sort by (number of) children
.ThenBy(elem => elem.Elements().Count())
.ThenBy(elem => elem.Attributes().Count())
// next line may vary for textually different but semantically equal input when elem & attr were unordered on input, but I need to restrain myself...
.ThenBy(elem => elem.ToString());
foreach (var oldElement in orderedElements)
{
var newElement = new XElement(oldElement.Name);
var orderedAttrs = oldElement.Attributes().OrderBy(attr => attr.Name.LocalName).ThenBy(attr => attr.Value.ToString());
newElement.Add(orderedAttrs);
newElement.Add(CopyAndSortElements(oldElement.Elements()));
newElements.Add(newElement);
}
return newElements;
}
PS: Chúng tôi đã kết thúc bằng XSLT mà người khác đã viết cùng một lúc. Tôi nghĩ rằng nó được trang bị dễ dàng hơn/tốt hơn trong quá trình xây dựng của mọi người. Nhưng có lẽ/hy vọng đây là một số sử dụng cho ai đó.
Bạn đã sử dụng xslt nào? –
uh, hãy xem cái này - nó cắt các giá trị từ các nút như '
Tôi đã vượt qua bài đăng này khi cố gắng tìm ra cách sắp xếp và tệp edmx. Giải pháp của tôi được dựa trên các giải pháp Arvo Bowens tìm thấy https://stackoverflow.com/a/19324438/212241
void Main()
{
XDocument xdoc = XDocument.Load(@"C:\git\Nvision\Source\NvisionEntities\NvisionModel.edmx");
Sort(xdoc.Root);
xdoc.Save(@"C:\git\Nvision\Source\NvisionEntities\NvisionModel.edmx");
}
public void Sort(XElement source, bool bSortAttributes = true)
{
//Make sure there is a valid source
if (source == null) throw new ArgumentNullException("source");
//Sort attributes if needed
if (bSortAttributes)
{
List<XAttribute> sortedAttributes = source.Attributes().OrderBy(a => a.ToString()).ToList();
sortedAttributes.ForEach(a => a.Remove());
sortedAttributes.ForEach(a => source.Add(a));
}
//Sort the children IF any exist
List<XElement> sortedChildren = source.Elements().OrderBy(elem => elem.Attributes("Name").Any() ? elem.Attributes("Name").First().Value.ToString() : string.Empty).ToList();
if (source.HasElements)
{
source.RemoveNodes();
sortedChildren.ForEach(c => Sort(c));
sortedChildren.ForEach(c => source.Add(c));
}
}
- 1. Công cụ định dạng Python
- 2. Công cụ so sánh XML/WSDL
- 3. Công cụ trực quan hóa XML?
- 4. Công cụ Eclipse cho Blueprint XML
- 5. Công cụ để trực quan hóa các kế hoạch xml thực thi dưới dạng HTML
- 6. Có công cụ nào để chuyển đổi các báo cáo XML của Emma sang định dạng XML Cobertura không?
- 7. Công cụ định dạng SQL miễn phí
- 8. Viết công cụ nhận dạng giọng nói
- 9. Phân tích cú pháp không đúng định dạng XML
- 10. Java Mã Công cụ Phân tích
- 11. Công cụ quét/phân tích cú pháp
- 12. Công cụ phân tích mã C++
- 13. Công cụ phân tích phụ thuộc require.js
- 14. Công cụ để phân tích mã PHP
- 15. Chọn công cụ phân tích mã tĩnh
- 16. Công cụ phân tích mã cho Android
- 17. Công cụ phân tích tệp Perfmon
- 18. Công cụ xác thực lược đồ XML XSD
- 19. Công cụ để tạo biểu đồ từ dữ liệu Xml
- 20. Định dạng XML nhị phân tốt nhất cho JavaME
- 21. Công cụ phân bổ các công cụ của Xcode bỏ lỡ một chút
- 22. Phân tích cú pháp XML trong Công nhân Web
- 23. Công cụ C++ để tạo các tệp XML ngẫu nhiên từ Lược đồ XML?
- 24. Công cụ định dạng SQL miễn phí tồn tại?
- 25. Công cụ nhận dạng giọng nói nguồn mở
- 26. Giá trị chú giải công cụ định dạng jqplot
- 27. Công cụ chuyển đổi PDF đa thành nhiều dạng TIFF
- 28. Công cụ ứng dụng của Google và phân trang
- 29. Công cụ phân tích ngoại lệ cho C++
- 30. Tiêu đề bao gồm các công cụ phân tích tĩnh?
trùng lặp: https://stackoverflow.com/q/9161934/492 .. nhưng câu trả lời ở đây là hữu ích hơn cho tôi –