উবুন্টু এবং / অথবা সেন্টোস-এর জন্য কি কোনও প্যাকেজ রয়েছে, যার একটি কমান্ড-লাইন সরঞ্জাম রয়েছে যা একটি এক্সপ্যাথ ওয়ান-লাইনারের মতো এক্সিকিউট করতে পারে foo //element@attribute filename.xml
বা foo //element@attribute < filename.xml
ফলস্বরূপ রেখায় ফিরে আসতে পারে?
আমি এমন কিছু সন্ধান করছি যা আমাকে কেবল apt-get install foo
বা তার yum install foo
পরে বাক্সের বাইরে কাজ করতে অনুমতি দেবে , কোনও মোড়ক বা অন্যান্য অভিযোজন প্রয়োজনীয় নয়।
এখানে কাছে আসা কিছু জিনিস উদাহরণ:
Nokogiri। আমি যদি এই মোড়কটি লিখি তবে আমি উপরে বর্ণিতভাবে মোড়কটিকে কল করতে পারি:
#!/usr/bin/ruby
require 'nokogiri'
Nokogiri::XML(STDIN).xpath(ARGV[0]).each do |row|
puts row
end
এক্সএমএল :: জন্য XPath। এই মোড়ক দিয়ে কাজ করবে:
#!/usr/bin/perl
use strict;
use warnings;
use XML::XPath;
my $root = XML::XPath->new(ioref => 'STDIN');
for my $node ($root->find($ARGV[0])->get_nodelist) {
print($node->getData, "\n");
}
xpath
এক্সএমএল থেকে :: এক্সপথ খুব বেশি শব্দ করে, -- NODE --
এবং attribute = "value"
।
xml_grep
এক্সএমএল থেকে :: টুইগ এমন এক্সপ্রেশনগুলিকে পরিচালনা করতে পারে না যা উপাদানগুলি ফেরত দেয় না, সুতরাং আরও প্রক্রিয়াজাতকরণ ছাড়াই বৈশিষ্ট্য মানগুলি বের করতে ব্যবহার করা যাবে না।
সম্পাদনা করুন:
echo cat //element/@attribute | xmllint --shell filename.xml
একই সাথে শোরগোল ফেরত দেয় xpath
।
xmllint --xpath //element/@attribute filename.xml
আয় attribute = "value"
।
xmllint --xpath 'string(//element/@attribute)' filename.xml
আমি যা চাই তা ফিরিয়ে দেয় তবে কেবল প্রথম ম্যাচের জন্য।
প্রশ্নটি প্রায় সন্তুষ্ট করার মতো আরও একটি সমাধানের জন্য, এখানে একটি এক্সএসএলটি রয়েছে যা নির্বিচারে এক্সপথ এক্সপ্রেশনগুলি মূল্যায়নের জন্য ব্যবহার করা যেতে পারে (ডিনের প্রয়োজন: এক্সএসএলটি প্রসেসরের সমর্থন মূল্যায়ন করুন):
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:dyn="http://exslt.org/dynamic" extension-element-prefixes="dyn">
<xsl:output omit-xml-declaration="yes" indent="no" method="text"/>
<xsl:template match="/">
<xsl:for-each select="dyn:evaluate($pattern)">
<xsl:value-of select="dyn:evaluate($value)"/>
<xsl:value-of select="' '"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
সাথে চালাও xsltproc --stringparam pattern //element/@attribute --stringparam value . arbitrary-xpath.xslt filename.xml
।
xpath
STDERR এ রয়েছে এবং STDOUT নয়।