XML DOMDocument метод selectSingleSpace завершается ошибкой при возврате каретки в тегах - PullRequest
0 голосов
/ 26 февраля 2011

Я пытаюсь выбрать узел в XML-файле, который содержит известную строку, но также содержит потенциально переменное количество пробельных символов, таких как пробелы и возврат каретки. Есть ли способ Когда я пробую строку вроде:

Set objXML = CreateObject("MSXML2.DOMDocument.4.0")

Set objNode = objXML.documentElement.selectSingleNode("//Main/Subgroup/MyTag[Label='SomeText']")

С этим работает:

<?xml version="1.0" encoding="UTF-16" ?> 
  <Main>
    <Subgroup>
      <MyTag>
        <Label>SomeText</Label>
      </MyTag>
    </Subgroup>
  </Main>

Но это возвращает нуль с этим:

<?xml version="1.0" encoding="UTF-16" ?> 
  <Main>
    <Subgroup>
      <MyTag>
        <Label>
          SomeText
        </Label>
      </MyTag>
    </Subgroup>
  </Main>

Есть ли способ отформатировать текст метки, используя подстановочные знаки или что-то подобное, или это флаг, чтобы он игнорировал пробелы? Я нашел эту переменную-член preserveWhiteSpace для objXML, но установка ее в false, похоже, ничего не сделала.

1 Ответ

1 голос
/ 26 февраля 2011

если вы используете XPath, вы можете использовать функцию contains(node, selectiontext), то есть

Set objXML = CreateObject("MSXML2.DOMDocument.4.0")
objXML.setProperty "SelectionLanguage", "XPath"
objXML.load "file.xml"
Set objNode = objXML.documentElement.selectSingleNode("//Main/Subgroup/MyTag[contains(Label, 'SomeText')]")

, хотя это также будет соответствовать любой строке, содержащей SomeText.Другой подход заключается в использовании normalize-space(node):

Set objNode = objXML.documentElement.selectSingleNode("//Main/Subgroup/MyTag[normalize-space(Label) = 'SomeText']")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...