XMLファイルの書式設定(かなり印刷)とその要素と属性の並べ替えを行うツールはありますか?XML並べ替え/書式設定ツール
答えて
私はこの記事を見つけた:http://www.biglist.com/lists/xsl-list/archives/200106/msg01225.html XMLをインデントするには、以下のXSLTを使用し、また、ソート属性のこと:
<?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>
私はまだそれを試してみましたが、最も可能性が高いしていない私は書式設定を行うにXSLTに固執します私のために。
にとってより有用でしたorder xml属性、タグの子をどのように注文できますか? – Natim
私は同じようなユーティリティを探していましたが、探していたものは実際に見つからなかったので、代わりにほとんど書きませんでした。これは非常に簡単です(ノードソートの属性は含まれません)。
多分、他の人には役に立ちます。それはGitHubです。ここで
は、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.)
です。次に例を示します。
> 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>
私は、このツールを気に入っ:https://xmlsorter.codeplex.com/
あなたがタグ名と属性で並べ替えることができます。私はいくつかのXMLファイルを比較する前にそれを使用するのが好きです。
これはXMLファイルをロードしないでしょう。 「無効なXML」エラーが表示されます。 doctypeタグを処理できませんでした。一度それを取り除いた。 – ScrappyDev
これは私のために、7K行以上のファイルと、半複雑なxml構造を持つファイルのペアを簡単にテストするために働いていたので、私は当初感銘を受けました。エラーは一切ありません。スムーズ/クイックダウンロード、起動、実行。注目すべき点の1つは、「ソート属性」と「特定のソート属性」を許可し、必要なものを選択できることです。重複して見える両方のオプションをチェックすることができます。 –
「属性の並べ替え」と「*特定の属性による並べ替え」は非常に異なります。 1行目は各行の属性を順序付けし、2行目はすべての行を特定の属性の内容で並べ替えます。後者はとても実用的だと思います。 – Gertsen
&書き換えEDMX-ファイル(Entity Frameworkの)すべての時間を並べ替えるように見えるのVisual Studioでのフラストレーションから(このUservoiceを参照してください)、私はものの順序を変更するために、いくつかのLinqpadコードを書きました。しかし、LinqPadの外で使うのは簡単です(明らかです)。
要素タイプ(タグ)、次に要素属性 "名前"の値順に要素を並べ替え、次に決定的な(異なるxmlでも同じ意味、[通常は同じ出力 - コード参照)です。
また、属性を注文します。 意味的 XML-属性はなし(関連する)順番を持たない場合がありますが、テキストで彼らは、およびバージョン管理システムは、まだ彼らにプレーンテキストを検討...
(それは別のエイリアスを解決しないことに注意してください、
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)Entity Framework edmx file regenerating differently amongst teamで述べた:我々は、他の同じ時刻に書いた誰かXSLTを使用して終了。私はそれがすべてのビルドプロセスでより簡単に/より良くフィットすると思います。 しかし多分/これは誰かに何らかの役に立つことだと思う。
どのようなxsltを使用して終了しましたか? –
uh、これを見てください。それは '
どのようにソートしてedmxファイルを見つけようとしたとき、私はこの記事全体を見に来ました。 アルヴォBowensのソリューションに基づいていた私の解決策が見つかりました。 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. 書式設定された日付の並べ替え
- 2. SQLの日付の書式設定と並べ替えの問題
- 3. 辞書の並べ替えと並べ替え
- 4. のpython - 並べ替えの設定
- 5. 選択並べ替え並べ替え
- 6. 並べ替えで並べ替え
- 7. 未定義列の並べ替え/並べ替え(LINQ \ Entity Framework)
- 8. MarkLogic node.js api - グループを並べ替え、並べ替えで並べ替え
- 9. C++の選択並べ替えなし並べ替え並べ替えなし
- 10. 配列形式と並べ替え
- 11. PowerShellは、ソートカスタムの並べ替え式
- 12. 行を表形式に並べ替え
- 13. キャッチ付きのファイルの線形辞書形式並べ替え
- 14. JAVAツリー並べ替え辞書
- 15. アルファベット順の辞書の並べ替え
- 16. 並べ替え辞書swift 3.0
- 17. 値で辞書を並べ替える?
- 18. 辞書学的に並べ替え
- 19. 並べ替え辞書はランダム
- 20. JQuery xml特定のノード値で並べ替え
- 21. 特定のXMLノードを並べ替える
- 22. SlickGridで既定の並べ替え列を設定します
- 23. XMLの書式設定
- 24. 並べ替えコスト
- 25. 並べ替え列
- 26. ヒープの並べ替えと挿入の並べ替え
- 27. Eclipseエクステンションポイントのエクステンションの並べ替え/並べ替え
- 28. VBA - ドラッグ&ドロップによる並べ替えの並べ替え
- 29. Riakでデータを並べ替え/並べ替える方法は?
- 30. jQuery Sortable入力名の並べ替えと並べ替え
重複:https://stackoverflow.com/q/9161934/492 ..しかし、答えはここにこれはに素晴らしいです私 –