【问题标题】:XML Data extractionXML 数据提取
【发布时间】:2014-06-02 16:18:25
【问题描述】:
<Filer>
<ID>123456789</ID>
<Name>
<BusinessNameLine1>Stackoverflow</BusinessNameLine1>
</Name>
<NameControl>stack</NameControl>
<USAddress>
<AddressLine1>123 CHERRY HILL LANE</AddressLine1>
<City>LA</City>
<State>CA</State>
<ZIPCode>90210</ZIPCode>
</USAddress>
</Filer>

这里有一个给我的 xml 代码示例。有了这个 xml,我需要从这个 xml 中掌握某个属性。

我只需要从文件中提取所有&lt;BusinessNameLine1&gt;。问题是这个标签在文件中多次出现,但我只需要在 &lt;Filer&gt; 标签中为假时提取它。

我会使用 PHP 执行此操作,但我正在工作,由于无法在我的计算机上安装软件,我无法运行 php 代码。但是,我可以执行 bash 文件。该文件也非常大,所以我不能把它放在excel中。我不知道该怎么做。我将不胜感激有关从哪里开始的帮助或指导。

【问题讨论】:

  • 标签中的 false”是什么意思?
  • 只是猜测:“跌倒”?

标签: xml bash parsing tags extract


【解决方案1】:

使用适当的 XML 解析器。例如xsh:

open file.xml ;
ls //Filer//BusinessNameLine1 ;

【讨论】:

  • BusinessNameLine1 不是Filer 的直系子代,我想你的意思是//Filer//Bus...
  • @Kent:谢谢。这就是他们因不适当的缩进而得到的结果。
【解决方案2】:

xpath 是你的朋友:有 xmllint 工具,它可以评估 xpath

xmllint --xpath '//Filer//BusinessNameLine1/text()' yourXML

输出:

Stackoverflow

&lt;Filer&gt; 之外的带有&lt;Busn..&gt; 标签的示例上进行测试:

kent$  cat t.xml
<root>
        <Trash>
                <BusinessNameLine1>trash</BusinessNameLine1>
        </Trash>
        <Filer>
                <ID>123456789</ID>
                <Name>
                        <BusinessNameLine1>Stackoverflow</BusinessNameLine1>
                </Name>
                <NameControl>stack</NameControl>
                <USAddress>
                        <AddressLine1>123 CHERRY HILL LANE</AddressLine1>
                        <City>LA</City>
                        <State>CA</State>
                        <ZIPCode>90210</ZIPCode>
                </USAddress>
        </Filer>
</root>

kent$  xmllint --xpath '//Filer//BusinessNameLine1/text()' t.xml    
Stackoverflow

【讨论】:

  • 这听起来是个不错的选择。但是,由于使用 Windows 机器,我无法运行 xmllint。我只能访问 powershell 或 cmd。感谢您的帮助。
【解决方案3】:

你可以试试这个组合的 awk 和 sed 命令,

$ awk -v RS='</Filer>' '/^<Filer>/ {gsub (/\n/," "); print}' file | sed -r 's/.*<BusinessNameLine1>([^<]*)<\/BusinessNameLine1>.*/\1/g'
Stackoverflow

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-25
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2020-07-02
    • 2015-09-08
    • 2021-03-18
    相关资源
    最近更新 更多