Javascript:XML Safari 中的 getElementsByTagName 不是 return 元素
Javascript: XML getElementsByTagName in Safari not return elements
这是我的 XML 的一部分:
<TextLine Version="2" objectID="3" persistentID="6">
<BaseProperties Version="5">
<txBase>665.249</txBase>
<XPos>221.205</XPos>
<angle>0</angle>
<verticalText>false</verticalText>
<objectLeading>0</objectLeading>
</BaseProperties>
<EnclosingObjectType>block</EnclosingObjectType>
<Alignment>center</Alignment>
<TRString>xfsadxzcsdf</TRString>
<RunLengthEncodedCharacterAttributes>
<CharacterAttributes RunCount="13" StyleRef="4098" TextRef="4096" TXKerning="0" TXPostKerning="0" BaselineShifting="0" />
</RunLengthEncodedCharacterAttributes>
<tagName></tagName>
</TextLine>
例如我把它放在 xmlString
,在 Safari 中:
var parser = new DOMParser();
var xmlObject = parser.parseFromString(xmlString, 'text/xml');
console.log(xmlObject.getElementsByTagName('TRString')[0].innerHTML);
它return错误:TypeError: undefined is not an object
我试过的:
console.log(xmlObject.getElementsByTagName('TRString')[0]);
它给你的不是 #element
,而是 string
。在这个例子中它应该是:
<TRString>xfsadxzcsdf</TRString>
我在 Chrome 中没有这个问题。我知道这并不难解决。但我想知道谁更标准?
Safari 中的 textContent
适合您吗?
如果是这样,您可以使用 textContent
,当 innerHTML
不可用时...
var xmlValue = xmlObject.getElementsByTagName('TRString')[0].innerHTML ||
xmlObject.getElementsByTagName('TRString')[0].textContent;
这是我的 XML 的一部分:
<TextLine Version="2" objectID="3" persistentID="6">
<BaseProperties Version="5">
<txBase>665.249</txBase>
<XPos>221.205</XPos>
<angle>0</angle>
<verticalText>false</verticalText>
<objectLeading>0</objectLeading>
</BaseProperties>
<EnclosingObjectType>block</EnclosingObjectType>
<Alignment>center</Alignment>
<TRString>xfsadxzcsdf</TRString>
<RunLengthEncodedCharacterAttributes>
<CharacterAttributes RunCount="13" StyleRef="4098" TextRef="4096" TXKerning="0" TXPostKerning="0" BaselineShifting="0" />
</RunLengthEncodedCharacterAttributes>
<tagName></tagName>
</TextLine>
例如我把它放在 xmlString
,在 Safari 中:
var parser = new DOMParser();
var xmlObject = parser.parseFromString(xmlString, 'text/xml');
console.log(xmlObject.getElementsByTagName('TRString')[0].innerHTML);
它return错误:TypeError: undefined is not an object
我试过的:
console.log(xmlObject.getElementsByTagName('TRString')[0]);
它给你的不是 #element
,而是 string
。在这个例子中它应该是:
<TRString>xfsadxzcsdf</TRString>
我在 Chrome 中没有这个问题。我知道这并不难解决。但我想知道谁更标准?
Safari 中的 textContent
适合您吗?
如果是这样,您可以使用 textContent
,当 innerHTML
不可用时...
var xmlValue = xmlObject.getElementsByTagName('TRString')[0].innerHTML ||
xmlObject.getElementsByTagName('TRString')[0].textContent;