このコード行を使用して、XML ファイルから 2 つのデータ エントリを取得しています。
perl xmlPerl.pl zbxml.xml "//zabbix_export/templates/template/items/item/name/text() | //zabbix_export/templates/template/items/item/description/text()"
これはデータを取り、それを垂直に表示します。例えば:
- 名前1
- 説明1
- 名前2
- 説明2
私はこれをC#で使用し、このように表示されるようにいくつかのコードを持っていました
- 名前1 - 説明1
- 名前2 - 説明2
- name3 - (説明がないため空白)
説明にいくつかの空白さえありました。役立つかもしれないので、ここにc#コードがあります。
XPathExpression expr;
expr = nav.Compile("/zabbix_export/templates/template/items/item/name | /zabbix_export/templates/template/items/item/description");
XPathNodeIterator iterator = nav.Select(expr);
//Iterate on the node set
List<string> listBox1 = new List<string>();
listBox1.Clear();
try
{
while (iterator.MoveNext())
{
XPathNavigator nav2 = iterator.Current.Clone();
// nav2.Value;
listBox1.Add(nav2.Value);
Console.Write(nav2.Value);
iterator.MoveNext();
nav2 = iterator.Current.Clone();
Console.Write("-" + nav2.Value + "\n");
今、Perl に切り替える必要があります。必要なことを行うために Perl コードを見つけようとする必要があるのか、それとも XPath で実行できるのかがわかりません。いくつかの w3 チュートリアルを見てみましたが、探しているものが見つかりませんでした。
ありがとう!
編集 - xmlPerl.pl のこの部分を編集する必要がありますか?
# print each node in the list
foreach my $node ( $nodeset->get_nodelist ) {
print XML::XPath::XMLParser::as_string( $node ) . "\n";
}