2012年2月15日水曜日

MAXScript xmlのテスト

dotNetObjectを使う

-- Xml Test 文字列
xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
   <rootElem ver = \"2.1\">
    <childElemA str = \"A\" num = \"123\"/>
    <childElemA str = \"A\" num = \"456\"/>
    <childElemB str = \"B\"/>
   </rootElem>"

-- XmlElementの属性値を取得
fn GetAttrib elem elemName = (
 if true == elem.HasAttribute( elemName ) then (
  return elem.GetAttribute( elemName )
 )
 return undefined
)


-- System.Xml.XmlDocument オブジェクトを作成
xmlDoc = dotNetObject "System.Xml.XmlDocument"
xmlDoc.LoadXml xmlString  -- 文字列からXMLを読み込む
xmlDoc.LocalName

-- ルートXmlElementを取得
rootElem = xmlDoc.DocumentElement

-- 属性値を取得
GetAttrib rootElem "ver"   -- "2.1"
GetAttrib rootElem "Ver"   -- undefined

-- 子ノードの属性値を取得
elemList = rootElem.GetElementsByTagName("childElemA");
for i = 1 to elemList.Count do (
 n = elemList.ItemOf (i - 1)  -- ノードを取得
 format "v = %\n" ( GetAttrib n "num" )
 format "v = %\n" ( GetAttrib n "Num" )  -- undefined
)

0 件のコメント:

コメントを投稿