首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xmlstarlet删除xml数据提要中除一个外的所有元素。

xmlstarlet删除xml数据提要中除一个外的所有元素。
EN

Stack Overflow用户
提问于 2015-06-02 16:54:06
回答 1查看 714关注 0票数 0

在我的Debian中,我希望只保留CategoryName Mobile Phones元素,并删除所有其他具有类别名称的元素,如Mobile AccessoriesLaptops等,总共有20个不同的类别名称。XML文件大小为800 MB。

代码语言:javascript
复制
xmlstarlet el -u sd.xml
Products
Products/Product
Products/Product/Brand
Products/Product/CategoryName
Products/Product/CategoryPathAsString

这里是示例XML:

代码语言:javascript
复制
<Products>
<Product>
   <ProductID>92545172</ProductID>
   <ProductSKU>630348288360</ProductSKU>
   <ProductName>Self Snap Aux Connected Selfie Stick</ProductName>
   <ProductDescription>This product is charge free </ProductDescription>
   <ProductPrice>353.00</ProductPrice>
   <ProductPriceCurrency>INR</ProductPriceCurrency>
   <WasPrice>649.00</WasPrice>
   <DiscountedPrice>0.00</DiscountedPrice>
   <ProductURL>http://clk</ProductURL>
   <PID>8053</PID>
   <MID>159526</MID>
   <ProductImageLargeURL>http://</ProductImageLargeURL>
   <StockAvailability>in stock</StockAvailability>
   <Brand>Self Snap</Brand>
   <CategoryName>Camera Accessories</CategoryName>
   <CategoryPathAsString>Root|Cameras &amp; Accessories|Camera Accessories|</CategoryPathAsString>
</Product>
<Product>
   <ProductID>29911116</ProductID>
   <ProductSKU>647266238</ProductSKU>
   <ProductName>Philips 40PFL5059/V7 40 inches Full HD LED Television</ProductName>
   <ProductDescription>LED Display Resolution : 1920 x 1080</ProductDescription>
   <ProductPrice>30196.00</ProductPrice>
   <ProductPriceCurrency>INR</ProductPriceCurrency>
   <WasPrice>39800.00</WasPrice>
   <DiscountedPrice>0.00</DiscountedPrice>
   <ProductURL>http://clk</ProductURL>
   <PID>8053</PID>
   <MID>159526</MID>
   <ProductImageLargeURL>http://n1</ProductImageLargeURL>
   <StockAvailability>in stock</StockAvailability>
   <Brand>Philips</Brand>
   <CategoryName>Televisions</CategoryName>
   <CategoryPathAsString>Root|TVs, Audio &amp; Video|Televisions|</CategoryPathAsString>
</Product>
<Product>
   <ProductID>93959216</ProductID>
   <ProductSKU>683203029</ProductSKU>
   <ProductName>Micromax Canvas Beat A114R</ProductName>
   <ProductDescription>Type : MultiSim Sim : Dual SIM Os Version : Android </ProductDescription>
   <ProductPrice>7999.00</ProductPrice>
   <ProductPriceCurrency>INR</ProductPriceCurrency>
   <WasPrice>9990.00</WasPrice>
   <DiscountedPrice>0.00</DiscountedPrice>
   <ProductURL>http://clk</ProductURL>
   <PID>8053</PID>
   <MID>159526</MID>
   <ProductImageLargeURL>http://n1</ProductImageLargeURL>
   <StockAvailability>in stock</StockAvailability>
   <Brand>Micromax</Brand>
   <CategoryName>Mobile Phones</CategoryName>
   <CategoryPathAsString>Root|Mobiles &amp; Tablets|Mobile Phones|</CategoryPathAsString>
</Product>
</Products>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-03 06:38:43

没有示例XML和预期结果XML是不清楚的。假设要删除名为CategoryName的元素,其内部文本不等于"Mobile Phones",则可以尝试使用以下xpath:

代码语言:javascript
复制
/Products/Product/CategoryName[. != 'Mobile Phones']

原来,您希望删除具有不等于<Product>的子元素<CategoryName>值的"Mobile Phones"元素。在本例中,您可以尝试以下xpath:

代码语言:javascript
复制
/Products/Product[CategoryName != 'Mobile Phones']
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30602078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档