給定一個像這樣的 XML 結構:
<?xml version="1.0" encoding="UTF-8"?>
<JSON>
<allFiles>
<_-Mna81v3-W_7WC1w69n9>
<name type="string">File1</name>
<reason type="string">Issue1</reason>
<status type="string">Pending</status>
<submissionTime type="string">11/3/2021, 10:11:37 AM</submissionTime>
</_-Mna81v3-W_7WC1w69n9>
<_-Mna83OkLF8vB8fV6CIy>
<name type="string">File2</name>
<reason type="string">Other</reason>
<status type="string">Pending</status>
<submissionTime type="string">11/3/2021, 10:11:44 AM</submissionTime>
</_-Mna83OkLF8vB8fV6CIy>
</allFiles>
</JSON>
正如您所看到的allFiles中的子節點是通用名稱,我該如何定位它們?
我試圖通過以下方式回傳它們
/JSON/allFiles[1]
File1 IssuePending11/3/2021, 10:11:37 AMFile2OtherPending11/3/2021, 10:11:44 AM
/JSON/allFiles/*
回傳第一個子節點如下
File1 Issue1Pending11/3/2021, 10:11:37 AM
我很困惑如何定位allFiles (_-Mna81v3-W_7WC1w69n9和_-Mna83OkLF8vB8fV6CIy)的子節點而不在命令中提及它們的名稱,因為它們是通用的并且會發生變化。
uj5u.com熱心網友回復:
您可以使用/JSON/allFiles/*來選擇所有這些元素。
我看起來有些奇怪的 XML 檔案設計,但這對我來說是新的!
uj5u.com熱心網友回復:
/JSON/allFiles/*回傳第一個子節點如下
File1 Issue1Pending11/3/2021, 10:11:37 AM
/JSON/allFiles/*確實選擇了allFiles.
但是,您看到的只是第一個此類元素的字串值。例如,在 XPath 1.0 中,當/JSON/allFiles/*節點集的結果傳遞給需要字串的函式時,就會發生這種情況。函式對第一個元素的字串值進行操作的標準行為——對于沒有經驗的人來說,這是一個可以理解的令人驚訝的結果。
您的選擇取決于您的使用方式 /JSON/allFiles/*
- 在托管語言(XSLT、Python、Java 等)的背景關系中,您可以遍歷節點集,而不是將其傳遞給需要字串的函式。
- 在編輯器或其他工具的背景關系中,您通常可以選擇將結果查看為標記而不是文本。(如果該工具沒有注意迭代結果然后轉換為字串值,則它可能會受到與上述相同的限制。)
也可以看看
- 在 XPath 中測驗 text() 節點與字串值
- 相同效果的解釋
contains()
我試圖通過以下方式回傳它們
/JSON/allFiles[1]
File1 IssuePending11/3/2021, 10:11:37 AMFile2OtherPending11/3/2021, 10:11:44 AM
這XPath的選擇第一個allFile的孩子JSON。您的結果再次表明您將結果視為字串值而不是標記。
也可以看看
- 如何通過 XPath 選擇第一個和最后一個元素?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/350144.html
