【问题标题】:How to spli XML-Like Tags in Powershell如何在 Powershell 中拆分类似 XML 的标签
【发布时间】:2011-09-16 16:52:34
【问题描述】:

我需要帮助。我正在读取一个文件(不是 XML 文件),其中的内容在形式上很像 XML:

<xml> <details> 
<details><number>AB053091351</number><totalcontent>2</totalcontent></details>
<details><number>AB053091996</number><totalcontent>2</totalcontent></details>
<details><number>AB053092621</number><totalcontent>2</totalcontent></details>
<details><number>AB053093365</number><totalcontent>0</totalcontent></details>
</details> </xml> 

我这样做:

$TRGFile <<-- filename of the content above.


    $result = Get-Content $TRGFile
    $pattern = '<policynumber>'
    $detailResult = ($result |Select-String -Pattern $pattern)

结果给了我这个:

<details><number>AB053091351</number><totalcontent>2</totalcontent></details>
<details><number>AB053091996</number><totalcontent>2</totalcontent></details>
<details><number>AB053092621</number><totalcontent>2</totalcontent></details>
<details><number>AB053093365</number><totalcontent>0</totalcontent></details>

我需要在每一行上循环以获取“AB053091351”和“2”中的值。请注意,虽然这是 XML 模式,但它是纯文本。

有人知道如何提取这些标签中的值吗?什么 Powershell 函数/cmdlet 适合这个?

他的文件在 .txt 中。我尝试使用以下方法将文件转换为 XML:

 Get-Content E:\file.txt | Export-CliXML E:\file.xml

为了让我像您提供的那样编写代码。但生成的 XML 文件不同:

<Obj RefId="5">
  <S><details><number>053091351</number><contentpages>2</contentpages></details></S> 
</Obj>

其中

<details><number>053091351</number><contentpages>2</contentpages></details>

was referred as string & not as tag.

【问题讨论】:

  • 示例数据和您的代码不匹配。 $pattern = '&lt;policynumber&gt;' 从哪里得到的?
  • 这种格式与 XML 有何不同?

标签: xml powershell split


【解决方案1】:

不知道你想用这些数据做什么(仍然想知道 XML 的不同之处以及为什么不能将文件作为 XML 处理),但这应该可以帮助你开始:

foreach ($elem in $detailResult){write-host (([xml]$elem).details.number+" "+([xml]$elem).details.totalcontent)}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    相关资源
    最近更新 更多