使用xmlstarlet将XML转换为CSV失败

问题描述 投票:0回答:1

我有一个格式如下的XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<appname version="2.3">
  <system name="web host">
    <username><![CDATA[username1]]></username>
    <password><![CDATA[password1]]></password>
    <note><![CDATA[]]></note>
    <url><![CDATA[]]></url>
  </system>
  <system name="vendor name">
    <username><![CDATA[[email protected]]]></username>
    <password><![CDATA[password2]]></password>
    <note><![CDATA[]]></note>
    <url><![CDATA[]]></url>
  </system>
  <system name="vendor name 3">
    <username><![CDATA[[email protected]]]></username>
    <password><![CDATA[password3]]></password>
    <note><![CDATA[]]></note>
    <url><![CDATA[]]></url>
  </system>
<appname>

我正在尝试使用:xmlstarlet \

sel -T -t -m / root / system \-v“ concat(@name,',',username,',',password,',',note,',',url)” \-n filename.xml

我得到:无法加载外部实体“ concat(@name,',',username,',',password,',',note,',',url)-n“

我只希望用一个制表符分隔的文档与当前文档分开,因此我可以将其导入另一个密码管理器。我有数百个条目,我真的不想重新输入。谁能帮忙???

xml csv xmlstarlet
1个回答
0
投票
冗长而复杂的答案是,您需要使用类似的东西

xml sel -T \ -t -m '//system' \ -v '@name' \ -o ' ' \ -v './username' \ -o ' ' \ -v './password' \ -o ' ' \ -v './note' \ -o ' ' \ -v './url' \ -n file.xml

© www.soinside.com 2019 - 2024. All rights reserved.